黑马程序员技术交流社区
标题:
学习分享求大神指导
[打印本页]
作者:
马明良
时间:
2015-9-3 15:08
标题:
学习分享求大神指导
/*
子类重写父类时要注意的方法:
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为静态类
}
}
作者:
马明良
时间:
2015-9-3 15:10
10天的基础班表示有点吃力。。。问题简单请勿见怪。虚心求指导!
作者:
Ralap军
时间:
2015-9-3 18:18
静态方法中是不允许出现this和super实例对象的关键字。静态方法只能访问静态成员变量和调用静态成员方法。
所以你这如果要调用,只能用类名调用Father.function();
作者:
Boint
时间:
2015-9-3 18:52
细节有错误
作者:
马明良
时间:
2015-9-3 19:51
Ralap军 发表于 2015-9-3 18:18
静态方法中是不允许出现this和super实例对象的关键字。静态方法只能访问静态成员变量和调用静态成员方法。
...
谢谢了,看来细节上还得下功夫啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2