首页 > 试题广场 >

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

[不定项选择题]
下面有关Java的说法正确的是(         )
  • 一个类可以实现多个接口
  • 抽象类必须有抽象方法
  • protected成员在子类可见性可以修改
  • 通过super可以调用父类构造函数
  • final的成员方法实现中只能读取类的成员变量
  • String是不可修改的,且java运行环境中对string对象有一个常量池保存
A对:java类单继承,多实现
B错:被abstract修饰的类就是抽象类,有没有抽象方法无所谓
C错:描述有问题。protected成员在子类的可见性,我最初理解是子类(不继承父类protected成员方法)获取父类被protected修饰的成员属性或方法,可见性是不可能变的,因为修饰符protected就是描述可见性的。
        这道题应该是要考察子类继承父类,并重写父类的protected成员方法,该方法的可见性可以修改,这是对的,因为子类继承父类的方法,访问权限可以相同或往大了改   
D对。
E错:final修饰的方法只是不能重写,static修饰的方法只能访问类的成员变量
F对。

发表于 2019-09-06 14:54:21 回复(22)
常量池怎么又叫对象池了。。。
发表于 2019-10-02 22:22:08 回复(14)
相同题目的答案都不一样,太离谱
发表于 2022-07-14 09:18:16 回复(0)
final的成员方法实现中只能读取类的成员变量 这句话没毛病
类的成员变量分为类变量和实例变量
类的成员方法分为类方法和实例方法
应该说“final的成员方法实现中只能读取类的类变量”这样才是错误的

发表于 2020-02-27 11:47:54 回复(3)
C选项,应该是对于方法而言。当子类重写父类方法时,可以将修饰符修改为public,
然后在子类重写方法中调用父类protected的方法,例如: //重写
public void test(){
    super.test();
}




发表于 2019-11-04 11:01:49 回复(0)
A 一个类可以实现多个接口 √
B 抽象类不一定有抽象方法,但如果一个类中有抽象方法,那么必定是抽象类. 
C protected在子类可见    √      
D 感觉有点问题,super不能调用父类的私有的构造器(构造函数)

E final的的成员方法只能读取类的成员变量  这里的类的成员变量包括了两部分:  类变量和实例变量     另外,fianl修饰的方法不能被重写(覆盖)
F String 是不可修改的,因为String 源码 有final修饰的属性value[]。  只能保证value不能指向其他的对象,但value指向的对象的状态是可以改变的

看起来String 发生了 变化,实际上在常量池重新创建了一个"aa"对象,让栈中的对象引用a 指向 "aa" 原来的"a"对象会被弃用,这就导致了如果要多次修改String会导致大量的内存占用,因为像"a"这样的对象被弃用,常量池依然存在,只是没有对象指向。因此如果要多个对象引用指向一个内容则用String , 如果单线程并且要修改字符串用StringBulider , 多线程并且要修改字符串 StringBuffer 

题目中仅仅是说对string对象会有一个常量池保存,没有讨论new String 和string = "xxx" 两者的区别。

发表于 2022-04-30 11:41:51 回复(5)
C  protected成员在子类可见性可以修改:    protected成员在子类中可见。可以在子类中重写父类的方法或变量的访问控制符,往大的修改。
E final修饰的方法只是不能重写,static修饰的方法只能访问静态成员方法和属性。
发表于 2020-08-15 13:38:45 回复(1)
我不知道有没有人和我有一样的疑惑,C答案protected成员在子类可见性可以修改?,成员属性可以修改吗?这完全是隐藏属性吧?除非说的是成员方法。
发表于 2019-10-05 10:04:57 回复(2)
new出来的string对象,并不会进常量池,所以我判断F是错的
发表于 2021-09-08 07:58:37 回复(4)
关于D选项,对于父类的protected方法,子类重写该方法时可见性只能相同(protected)或放大(public),而不能减小可见性(设为private)。因为将子类对象赋给一个父类变量时,由于多态机制,该变量调用方法时会调用子类的版本,此时必须保证能够正常调用。否则就不符合里氏替换的基本原则,即确保父类对象可以用子类对象来替换。
发表于 2020-03-22 01:15:44 回复(0)

E选项:final的成员方法实现中只能读取类的成员变量
为什么对?

发表于 2022-05-09 10:32:08 回复(5)
D最搞笑了,题目快刷完,有时候
通过super可以调用父类构造函数
有时候
通过super()可以调用父类构造函数
MMP,一下错了2个一样的题目,对,就这个题目2个一模一样的。
发表于 2020-05-11 10:32:07 回复(2)

通过super()才可以调用构造函数吧,super怎么调呢

发表于 2019-11-22 08:08:40 回复(2)

被abstract修饰的类就是抽象类,有没有抽象方法无所谓

发表于 2019-09-19 18:41:59 回复(0)
选项C:可以修改,只是访问权限要>=父类成员
发表于 2019-09-19 11:36:13 回复(0)

c选项的可见性应该说的是权限修饰符,子类重写父类中的方法时,子类的权限修饰符可以大于等于父类。即如果父类的修饰符时protected,那么子类的修饰符可以是public。

public class Student extends Person{
    @Override
    public void run() {
    }
    @Override
    protected void talk() {
    }
}

class Person {
    int name;
    protected void run() {
    }
    protected void talk() {
    }
}
发表于 2021-02-04 20:50:45 回复(0)
E选项 纯搞笑的 类变量也是可以的
发表于 2022-06-11 15:59:31 回复(1)
E是错的吧,final 的成员方法除了能读取类的成员变量,还能读取类变量
发表于 2022-04-18 23:15:57 回复(1)
求解E选项
发表于 2022-04-17 21:13:12 回复(0)
抽象类必须有抽象方法?
发表于 2021-07-06 11:07:34 回复(0)