首页 > 试题广场 >

下面有关Java的说法正确的是( &nb...

[不定项选择题]
下面有关Java的说法正确的是(    )
  • 一个类可以实现多个接口
  • 抽象类必须有抽象方法
  • protected成员在子类可见性可以修改
  • 通过super可以调用父类构造函数
  • final的成员方法实现中只能读取类的成员变量
  • String是不可修改的,且java运行环境中对string对象有一个对象池保存
解释一下c选项,意思是父类中的protected方法子类在重写的时候访问权限可以修改,其实就是重写的要素之一,换了个说法而已
发表于 2019-09-15 17:58:18 回复(6)
解释一下后两个,final 的成员方法除了能读取类的成员变量,还能读取类变量。(之前混淆了,给大家带来混乱,抱歉)

String 不可以修改,StringBuffer 和 StringBuilder 可以修改,String 只能改变指引,如果字符串常量池中没有正需要的串,就创建一 个新的字符串,然后让 String 对象指向它。
编辑于 2020-10-21 18:05:28 回复(8)
    抽象类能继承一个普通类(或抽象类),实现多个接口。
    抽象类和普通类相比只是不能被实例化,只能作为子类的超类。
    抽象类是用来捕捉子类的通用特性的,被用来创建继承层级里子类的模板。
    可以有默认的方法实现。
    抽象类可以有构造方法。
    可以有main方法。
    不必须有抽象方法,但是包含抽象方法的类一定是抽象类。

    ===接口===
    接口能实现多个其他接口。
    接口是抽象方法的集合,一个类实现了某个接口就必须实现抽象方法。
    接口抽象方法默认修饰符是public(可以不写),不能使用其他修饰符。
    java 8中接口可以包含具体的方法实现,方法实现必须default修饰。

发表于 2019-10-17 17:33:55 回复(4)
B选项:抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类
发表于 2019-06-13 14:17:20 回复(1)
抽象类可以不具有抽象方法! 抽象类可以不具有抽象方法! 抽象类可以不具有抽象方法! 重要的事情说三遍
发表于 2020-03-03 02:19:00 回复(0)
我觉得应该是"
通过super()可以调用父类构造函数
" 而不是题目里的super
发表于 2021-03-02 17:32:44 回复(2)

E:还能读取实例变量

发表于 2019-10-19 00:16:31 回复(4)
JAVA中的变量总体可以分为全局变量(在全局位置定义的变量)和局部变量(某个方法中定义的变量)。 详尽划分又可以分为类变量(static)、实例变量(非static,依附于实例存在的)、常量,这些都是成员变量。因此E选项的意思final方法只能访问到类成员变量(这里应该是类变量的意思),显然是不对的。
编辑于 2021-05-21 10:53:39 回复(0)
该题F选项:
  • String是不可修改的,且java运行环境中对string对象有一个对象池保存
    
    这个后半句“对string对象有一个对象池保存”应该是不准确的吧。
对于下面这种写法s1,s2其实是保存的堆区的2个不同对象引用,而不是说对string对象有一个对象池保存。
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); //打印false
而如果是下面这种字面量倒是可以勉强这么说
String s1 = "hello";
String s2 = "hello";
String s3 = "helloworld";
System.out.println(s1 == s2); //打印true
以上仅供一起探讨研究。


发表于 2020-04-17 21:35:29 回复(0)
重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。 (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。)
发表于 2019-10-04 18:55:27 回复(0)
final修饰的方法除了不能被重写,其它和普通方法一样,Java中的变量有成员变量(实例变量、类变量、常量)、局部变量,所以e少了个局部变量
发表于 2022-03-22 13:16:57 回复(0)
C是有歧义,玩文字游戏。成员,分为成员变量和成员方法,对于变量 看权限修饰符,有权限则可以读写。对于成员方法 override 可以扩大权限范围,如果是public的 也只能是public的了。
编辑于 2020-09-01 09:07:40 回复(0)
里斯替换原则里面子类override父类的字段,可以定义更大的访问权限,对于方法可以细化异常.
发表于 2020-02-18 17:38:58 回复(0)
可见性可以修改的意思是 可以在子类使用其他可见性修饰符 protected的子类只要使用>= protected的修饰符即可,因此子类可以使用public,意思就是修改了可见性。。。
发表于 2019-11-06 22:34:55 回复(0)
有大神解释下“protected成员在子类可见性可以修改”的意思吗?

发表于 2019-09-08 14:57:50 回复(6)
E选项:final 的成员方法除了能读取类的成员变量,还能读取类变量。
发表于 2022-04-14 11:17:25 回复(1)
spuer调用是错的,同比构造函数之间的调用如果说是this调用,那么也是错的,调用父类构造函数是spuer(),构造函数之间调用是this(),且都放在第一排
发表于 2021-07-27 08:50:58 回复(0)
按照我的理解解释一下:
2. 抽象类中可以没有抽象方法 可以自己写个abstract类试试
3. 重写的基本操作,举个例子:Object类中的clone()方法就是protected修饰的 你重写的时候可以改为public
5.final方法可以访问static修饰的类成员变量,也可以访问非static修饰的普通成员变量
发表于 2021-04-16 12:04:58 回复(0)
子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
发表于 2021-03-12 13:37:12 回复(0)
常量池不是对象池
发表于 2020-07-14 20:02:34 回复(1)