首页 > 试题广场 >

根据以下代码段,下列说法中正确的是( )。

[单选题]

根据以下代码段,下列说法中正确的是(    )

public class Parent {
    private void m1(){}
    void m2(){}

    protected void m3(){}

    public static void m4(){}

}


  • 子类中一定能够继承和覆盖Parent类的m1方法
  • 子类中一定能够继承和覆盖Parent类的m2方法
  • 子类中一定能够继承和覆盖Parent类的m3方法
  • 子类中一定能够继承和覆盖Parent类的m4方法
是因为包的问题吗?
发表于 2019-07-29 17:13:28 回复(0)
更多回答
    public和protected都可以作用于子类,但在多态情况下,静态函数调用时编译和运行看左边,所以子父类存在同名静态函数访问的是父类,子类并不能覆盖父类的方法,所以选C
发表于 2017-05-09 17:19:02 回复(20)
通过继承,子类可以拥有所有父类对其可见的方法和域
A.私有方法只能在本类中可见,故不能继承,A错误
B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误
C.保护修饰符凡是继承自该类的子类都能访问,当然可被继承覆盖;C正确
D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误
发表于 2017-12-16 00:16:31 回复(16)
我的看法是:子类重写父类的静态方法,被子类调用时,子类方法并不会生效,而是调用了父类的静态方法。static关键字至关重要,经常在选项中出现,只要记住static属于类,在编译阶段就已经确定函数名和地址,并已经分配了内存,所以不存在运行时期多态的判断,他只是一个静态绑定,所以无法重写。
发表于 2017-07-21 19:51:29 回复(3)
static修饰的方法,在类创建的时候就写到了内存中,不能被修改
发表于 2017-06-02 23:22:14 回复(2)

1、访问控制权限:public > protected > default > privte  (PS:什么都不写,即为 default);

2、只有 public、protected 的方法可以 100% 可以被继承;

3、default 的方法想要继承,要求子类必须在同名的包下;private 的方法不可被继承;

-----------------------------------------------------------------------------------------------------------------------------

4、静态变量或静态方法,在子类中可以写同名的变量和方法,但是仍然各自属于父类或子类,与继承无关,与覆盖(重写)无关;

5、静态变量或静态方法在调用时,各自调用各自的静态的变量或静态方法,不管有没有强转,只取决于调用者是谁;

发表于 2019-01-07 13:54:01 回复(1)
子父类可能不在同一个包中
发表于 2017-07-02 11:24:57 回复(3)
父类的静态方法可以被子类继承,但是不能被重写(覆盖),静态方法在类加载时就加载到方法区了(1.8后是元空间),如果在子类写了个一样的方法,那是属于子类的另一个静态方法了,不是重写。
发表于 2017-12-17 11:01:48 回复(0)
求作用域嘛~protected在子类中是一定可以访问的
发表于 2017-05-08 22:57:30 回复(0)
静态类不能被子类继承和覆盖
发表于 2017-05-12 20:49:14 回复(2)
通过继承,子类可以拥有所有父类对其可见的方法和域 A.私有方法只能在本类中可见,故不能继承,A错误 B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误 C.保护修饰符凡是继承自该类的子类都能访问,当然可被继承覆盖;C正确 D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误
发表于 2021-10-31 17:07:16 回复(0)
java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏.  
发表于 2017-06-02 20:28:09 回复(0)
    所以这个题坑是  子类可能不和父类在同一个包下。而在其他包。。。。。。。
编辑于 2018-09-04 16:02:37 回复(0)
选C
A、私有方法不可继承和覆盖,只是在子类中新的方法。
B、默认修饰符的方法,字符类一旦不再一个包,就不能覆盖了。
D、注意一下,重写针对的都是可见的实例方法,对于私有方法和静态方法都不能重写。
发表于 2018-07-16 21:17:59 回复(0)

C。
解析:
A.private私有方法只在类的内不可见,如果存在内部类,则可以继承和覆盖m1方法。
B.default默认权限是类内部和同一个包下可见,因此如果子类不是内部类,且不在同一个包下,则也是无法继承和覆盖的。
C.正确
D.static是类的成员方法,不可覆盖。静态变量或静态方法,在子类中可以写同名的变量和方法,但是仍然各自属于父类或子类,与继承无关,与覆盖(重写)无关;
发表于 2020-07-21 15:55:23 回复(0)
静态方法与变量都不能被子类覆盖
发表于 2023-07-01 22:33:27 回复(0)
大意了看到public 秒选啊
发表于 2021-03-23 16:40:45 回复(0)
C答案有问题,如果父类与子类不在同一个包内那么protected 的方法也是无法被访问的。

发表于 2020-04-03 10:57:30 回复(1)
A、私有方法不可继承和覆盖。
B、默认修饰符的方法,子类和父类一旦不再一个包,就不能继承和覆盖。
D、继承和覆盖针对的都是可见的实例方法,而不针对静态方法。
发表于 2019-11-13 20:08:24 回复(0)
不严谨,外包中的子类呢
发表于 2018-05-22 18:33:43 回复(1)
《java编程思想》
protected的可见性在于两点:
  • 基类的protected成员是包内可见的,并且对子类可见;

  • 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。

发表于 2018-03-12 23:27:09 回复(1)