Java子类与父类方法的隐藏和覆盖
2015-09-22 12:40
627 查看
class Base{
int
x = 1;
static
int
y = 2;
String name(){
return
"mother";
}
static String staticname(){
return
"static mother";
}
}
class Subclass extends Base{
int
x = 4;
int
y = 5;
String name(){
return
"baby";
}
static String staticname(){
return
"static baby";
}
}
public
class Test02{
public
static
void main(String[] args){
Subclass s = new Subclass();
System.out.println(s.x+" "+s.y+" "+s.name()+" "+s.staticname());
Base s1 = s;
System.out.println(s1.x+" "+s1.y+" "+s1.name()+" "+s1.staticname());
}
}
/*
结果:
4 5 baby static baby
1 2 baby static mother
结论:
父类的实例方法被子类的同名实例方法覆盖
父类的静态方法被子类的同名静态方法隐藏
父类的实例变量和类变量可以被子类的实例变量和类变量隐藏
就"Base s1 = s"来说:把s赋值给s1时,s(子类)的方法name已经把父类的name方法覆盖了,却没有覆盖static name,而是隐藏了它。
赋值给s1后,s1的name方法已经变成了"baby",而staticname方法只是被隐藏而没有被覆盖,现在有还原成了"static mother"
*/
int
x = 1;
static
int
y = 2;
String name(){
return
"mother";
}
static String staticname(){
return
"static mother";
}
}
class Subclass extends Base{
int
x = 4;
int
y = 5;
String name(){
return
"baby";
}
static String staticname(){
return
"static baby";
}
}
public
class Test02{
public
static
void main(String[] args){
Subclass s = new Subclass();
System.out.println(s.x+" "+s.y+" "+s.name()+" "+s.staticname());
Base s1 = s;
System.out.println(s1.x+" "+s1.y+" "+s1.name()+" "+s1.staticname());
}
}
/*
结果:
4 5 baby static baby
1 2 baby static mother
结论:
父类的实例方法被子类的同名实例方法覆盖
父类的静态方法被子类的同名静态方法隐藏
父类的实例变量和类变量可以被子类的实例变量和类变量隐藏
就"Base s1 = s"来说:把s赋值给s1时,s(子类)的方法name已经把父类的name方法覆盖了,却没有覆盖static name,而是隐藏了它。
赋值给s1后,s1的name方法已经变成了"baby",而staticname方法只是被隐藏而没有被覆盖,现在有还原成了"static mother"
*/
相关文章推荐
- context-param引发spring容器以及servlet容器的关联
- 快速排序java实现
- Java读取Excel
- spring websocket自动断开连接再创建引发的问题解决方案
- java于23设计模式
- (25)JAVA.IO--使用Java创建指定大小的空文件
- struts2 国际化
- MyEclipse 快捷键(快捷键无效解决方案)
- JDK源码阅读之HashMap类
- JSP教程之使用JavaBean完成业务逻辑的方法
- java 线程Thread.Sleep详解(转载)
- 【转】java中注解的使用与实例
- JDK、J2EE、J2SE、J2ME四个易混淆概念区分
- mina 框架java服务端的搭建和通信。
- Eclipse中10个最有用的快捷键组合
- Java取整方法总结
- Struts2开发-i18n国际化实现案例-登录页面
- Java中的常量:如何避免反模式
- myeclipse修改内存大小不足
- Spring MVC POST中文乱码解决方案