java 子类继承父类 -- 重写、覆盖与多态

本文详细解读Java中类的继承与多态特性,包括实例方法覆盖与静态方法隐藏的区别,以及如何通过super关键字访问隐藏的实例变量。通过具体代码示例,展示了子类如何重写父类方法及成员变量的隐藏与覆盖现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:

JAVA-傻子(373481014) 15:12:26 
1.同名的实例方法被覆盖 ,同名的静态方法被隐藏,child类的getName实例方法覆盖了parent的getName实例方法,chind的getKind方法隐藏了parent类的getKind方法
2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法
3.如果需要访问父类被隐藏 的实例变量,加上super就好了,比如访问父类的name,写上super.name就好了

JAVA-武汉学生(47013027) 15:15:02 

JAVA-武汉学生(47013027) 15:15:20 

JAVA-武汉学生(47013027) 15:15:34 
既然没有错误?这是为什么
JAVA-武汉学生(47013027) 15:16:46 
父类和子类里面都有自己的public的成员变量geshi
For_Funs(877083316) 15:17:29 
成员变量在子类中会被隐藏
JAVA-武汉学生(47013027) 15:17:50 

JAVA-傻子(373481014) 15:18:17 
1.不能用子类的静态方法隐藏 父类中同样标示(也就是返回值 名字 参数都一样)的实例方法
2.不能用子类的实例方法覆盖 父类中同样标示的静态方法
3.这点儿请注意,就是变量只会被隐藏 不会被覆盖,无论他是实例变量还是静态变量,而且,子类的静态变量可以隐藏父类的实例变量,子类的实例变量可以隐藏 父类的静态变量

 

2:

2009-09-14 walsh (资深程序员)
Java代码    收藏代码
  1. class Foo {  
  2.     public int a;  
  3.   
  4.     public Foo() {  
  5.         a = 3;  
  6.     }  
  7.   
  8.     public int addFive() {  
  9.         a += 5;  
  10.         return a;  
  11.     }  
  12.   
  13.     public int getA() {  
  14.         return a;  
  15.     }  
  16. }  
  17.   
  18. public class Bar extends Foo {  
  19.     public int a;  
  20.   
  21.     public Bar() {  
  22.         a = 8;  
  23.     }  
  24.   
  25.     public int addFive() {  
  26.         this.a += 5;  
  27.         return a;  
  28.     }  
  29.   
  30.     public int getA() {  
  31.         return a;  
  32.     }  
  33.   
  34.     public static void main(String[] args) {  
  35.         Foo foo = new Bar();  
  36.         //调用的是子类中的方法  
  37.         System.out.println(foo.getA());  
  38.         //直接调用父类中的a  
  39.         System.out.println("Value: " + foo.a);  
  40.         //调用的是子类中的方法  
  41.         System.out.println(foo.addFive());  
  42.           
  43.     }  
  44. }  
输出结果:  
8  
Value: 3  
13  


楼主,只需要明白一点就行了:在Java中重写指的是方法的重写,而不是属性的重写,还有多态也只是方法的多态 ,没有属性的多态。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值