Java中继承、重载、覆盖一些总结
1、继承:利用extends关键字直接继承一个类。
当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量和方法
在不同包时继承public/protected级别的变量和方法。
2、重载:如果有两个方法的名称相同,但参数不一致,这样一个方法是另一个方法的重载。
方法名相同
方法的参数类型,个数顺序至少有一项不同
3、覆盖:如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
子类的方法名称返回类型及参数签名 必须与父类的一致
子类方法不能缩小父类方法的访问权限
子类方法不能抛出比父类方法更多的异常
如果在子类的构造函数中并没有使用显式的调用父类的构造函数(使用super),则会执行父类的无参构造函数
实例
Java代码
<span>
<SPAN>
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7523')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7523>class Super {
static int stat = 1;
int nonStat = 2;
static int statMethod(){
return 3;
}
int nonStatMethod(){
return 4;
}
}
public class Sub extends Super {
static int stat = 10;
int nonStat = 20;
static int statMethod(){
return 30;
}
int nonStatMethod(){
return 40;
}
public static void main(String[] args) {
Super s = new Sub();
System.out.println("Static is " s.stat);
System.out.println("Non-Static is " s.nonStat);
System.out.println("Static method is " s.statMethod() );
System.out.println("Non-Static method is " s.nonStatMethod() );
Sub sub = (Sub)s;
System.out.println("Static is " sub.stat);
System.out.println("Non-Static is " sub.nonStat);
System.out.println("Static method is " sub.statMethod() );
System.out.println("Non-Static method is " sub.nonStatMethod() );
}
} </SPAN>
输出结果:
<SPAN> Static is 1
Non-Static is 2
Static method is 3
Non-Static method is 40
Static is 10
Non-Static is 20
Static method is 30
Non-Static method is 40
</span>您可能感兴趣的文章:
Java中继承、重载、覆盖一些总结
浅谈PHP面向对象的继承
php 继承详解
Cocos2d-JS中JavaScript继承
golang 面试题(四)go的组合继承
你了解python中的继承吗
java基础-java面向对象编程二
重载(overload)、覆盖(override)、隐藏(hide)介绍与区别
Javascript 设计模式读书笔记(三)——继承
Java笔记三:继承(inheritance)