首先Plant类有一个带一个参数的构造方法,所以默认不带参数的构造方法就不存在了。所以,Tree作为Plant的子类,它和父类一样,也只有带一个参数的构造方法。也就是说,Plant和Tree进行实例化时,必须带一个参数,否则编译不会通过,排除A,B
C,D中想要表示的是正确的构造函数重载方式,只有D是正确的,C中的写法等于为Plant的类定义了一个不带参数的构造函数,而且在这个不带参数的构造方法里调用了带参数的构造函数,这就是构造方法的重载。构造方法重载中的this就代表这个类本身。此处只能用this关键字,不能用类的名称,所以C正确D错误!
希望我的回答能帮助你!
public class C{
public static void main(String[] args) throws Exception
{
Person p=new Manito("宙斯")
p.eat(new Watermelon())
System.out.println("可见大神也是人!")
}
}
abstract class Person
{
Person(String name)
{
this.name=name
}
protected String getName()
{
return this.name
}
public abstract void eat(Plant p)
private String name
}
class Manito extends Person
{
Manito(String name)
{
super(name)
}
public void eat(Plant p)
{
System.out.println("大神"+this.getName()+"刚刚吃了:"+p.getType()+"。")
}
}
class Plant
{
Plant(String type)
{
this.type=type
}
String getType()
{
return this.type
}
private String type
}
class Watermelon extends Plant
{
Watermelon()
{
super("西瓜")
}
}
char *plant[ ]和 char plant[ ][ ]如果不改变内部数据的话,完全是一个效果,但是你在change函数里改变的str的值,char数组的元素是可以改变的,char*指向的元素是不能改变,一改就崩溃,举个例子:char a[]="abc"你可以a[0]='d';但char* a="abc",你执行a[0]='d'直接程序崩溃了,所以关键点就是你再change里{str[i]=str[i]-32}这么一个 *** 作,出现了问题。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)