/*
子类重写父类时要注意的方法:
A:父类的私有方法不可以被重写
B;子类访问权限一定要大于等于父类的方法权限
C:静态的方法只能被静态重写-----这个不算是对象的关系
D:覆盖的应用:
当子类需要父类的功能,而且功能主体子类有自己的特有内容
,可以复写父类的方法,这样,这样既沿袭了父类的方法有保持了自己的特有内容。
*/
class Father
{
private void show(){
System.out.println("这是我的养老金");
}
public void method(){
function();
System.out.println("养老金靠自己存钱缴纳而获得");
show();
}
public static void function(){
System.out.println("养老金的功能对于没有退休金的老年人很重要");
//method();---->错误原因:---------->function();为静态不能引用非静态的method
}
}
class Son extends Father
{
public void method(){
System.out.println("我要靠自己存钱缴纳而获得");
super.method();/*用super调用了父类中的method方法,
父类中method方法有调用了私有的show()和静态的function()
从而验证了静态只能调用静态方法,和调用父类私有方法的一个公共方法(通过默认无参构造)
--------父类私有方法子类通过get(参数)+有参构造方法调用的以后再练习*/
}
//public static void function()
public static void function(){
System.out.println("养老金的缴纳对于我也很重要");
//super.method();静态的方法不能够引用父类中非静态的方法super为非静态
super.function();该方法引用失败????---------->错误原因:???????求解释(---------- javac ----------
Test5.java:54: 错误: 无法从静态上下文中引用非静态 变量 super
super.function();//该方法调用失败????---------->错误原因:???????求解释
^
1 个错误
输出完成 (耗时 1 秒) - 正常终止)
}
}
class Test5{
public static void main(String[] args)
{
//创建父类对象并验证
Father f=new Father();
//f.show();
f.method();
f.function();
System.out.println("-----------");
//创建子类对象并验证
Son s=new Son();
//s.show();
s.method();
s.function();//不能使用的原因是suoper为静态类
}
}
|
|