Java 求详细解答

Java 求详细解答,第1张

正确答案是C。

首先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}这么一个 *** 作,出现了问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11776731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存