方法调用问题

方法调用问题

package com.imooc.model.implementation;

import com.imooc.model.interf.IAct;
import com.imooc.model.superclass.Animal;

public class Bear extends Animal implements IAct {
	
	public Bear(){
		
	}
	public Bear(String petName,int age){
		super(petName,age);
	}
	@Override
	public void skill() {
		// TODO Auto-generated method stub
		System.out.println("挽着花篮,打着雨伞,自立走秀");
	}

	@Override
	public void act() {
		// TODO Auto-generated method stub
		System.out.println();
	}

	@Override
	public void love() {
		// TODO Auto-generated method stub
		System.out.println("喜欢卖萌");
	}
	public String info(){
		Bear call=new Bear();
		String str="表演者:"+this.getPetName()+"\n年龄:"+this.getAge()+"\n技能:";
		return str;
	}
}

想要在info方法里的 String str= 语句调用 skill() 方法和 love() 方法,能否调用?该如何调用?

(我用 call.skill() 方式调用会编译报错“The operator + is undefined for the argument type(s) String, void”)

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你写this.skill()、this.love()

  • 慕村2295823 提问者 #1
    我之前就是这么写的,一样的错误信息
    2018-03-07 11:15:35
  • Tender10 回复 提问者 慕村2295823 #2
    你检查一下是否其它类中有没有返回值的方法,你写了return的。
    2018-03-07 11:47:30
  • 慕村2295823 提问者 回复 Tender10 #3
    老师,我把Bear类继承的父类与接口贴上来了,目前没有使用其他类调用Bear类,只在Test类写了“Bear bear=new Bear("Bill",1);”
    2018-03-07 16:36:00
提问者 慕村2295823 2018-03-07 16:33:43
package com.imooc.model.superclass;

/**
 * 父类Animal
 * @author J
 *
 */
public abstract class Animal {
	/**
	 * 描述动物昵称和年龄;
	 * 设定抽象方法,返回对喜好的描述信息
	 */
	private String petName;
	private int age;
	
	public abstract void love();
	
	//创建无参构造方法
	public Animal() {
		
	}
	//创建有参构造方法,实现对昵称和年龄的赋值
	public Animal(String petName, int age) {
		
		this.petName = petName;
		this.age = age;
	}
	//get,set方法
	public String getPetName() {
		return petName;
	}

	public void setPetName(String petName) {
		this.petName = petName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	/**
	 * 抽象方法info,返回表演者信息
	 * @return 表演者信息
	 */
	public abstract String info();
}
package com.imooc.model.interf;
/**
 * 接口IAct
 * 描述技能
 * 描述表演
 * @author J
 *
 */
public interface IAct {
	void skill();
	
	void act();
}

这是Bear类继承的父类与接口

  • 因为skill()和love()方法都是无返回值的方法,是不能通过+来拼接字符串的,因为这两个方法直接是通过输出语句输出的字符串没有返回值。所以要想在info()方法里输出技能和爱好,只能直接调用skill()和love()方法。不要放在String str后面进行拼接就可以了。
    2018-03-07 16:53:51
  • 提问者 慕村2295823 回复 Tender10 #2
    好的,谢谢老师
    2018-03-07 17:01:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师