标签:
继承是复用程序代码的有力手段,当多个类(Sub1,Sub2,...Sub100)之间存在相同的属性和方法时,可从这些类中抽象出父类Base。在父类Base中定义这些相同的属性和方法,所有的Sub类无须重新定义这些属性和方法,而只需要通过extends语句来声明继承Base类:
public class Sub extends Base {...}
Sub 类就会自动拥有在Base类中定义的属性和方法。
6.1 继承的基本语法
在JAVA语言中,用extends 关键字来表示一个类继承了另一个类,例如:
public class sub extends Base{
...
}
以上代码表明Sub类继承了Base类。那么类到底继承了Base类的哪些东西呢?这需要分为以下两种情况。
假定Sub和Base类位于同一个包中,以下程序演示在Sub类中可继承Base类的哪些成员变量和方法。
public class Base {
public int publicVarOfBase=1; //public 访问级别
private int privateVarOfBase=1; //public 访问级别
int defaultVarOfBase=1; //默认访问级别
protected void methodOfBase() {} //protected 访问级别
}
public class Sub extends Base{
public void methodOfBase(){
publicVarOfBase=2; //合法,可以访问Base类的public类型的变量
defaultVarOfBase=2; //合法,可以Base类的默认访问级别的变量
privateVarOfBase=2; //非法,不能访问Base类的private类型的变量
methodOfBase(); //合法,可以访问Base类的protected类型的方法
}
public static void mian (String args[]){
Sub sub=new Sub();
Sub.publicVarOfBase=3; //合法,Sub类继承了Base类的public类型的变量
Sub.privateVarOfBase=3; //非法,Sub类不能继承Base类的private类型的变量
Sub.defaultVarOfBase=3; //合法,Sub类继承了Base类的默认访问级别的变量
Sub.methodOfBase(); //合法,Sub类继承了Base类的protected类型的方法
Sub.methodOfSub(); //合法,这是Sub类本身的实例方法
}
}
Java语言不支持多继承,即一个类只能直接继承一个类。例如以下代码会导致编译错误。
class Sub extends Base1,Base2,Base3(...)
尽管一个类只能一个直接父类,但是它可以有多个间接的父类,例如以下代码表明Base1 类继承Base2类,Sub类继承Base1类,Base2类是Sub类的间接父类。
class Base1 extends Base2{...}
class Sub extends Base1{...}
所以的Java 类都直接或间接地继承了java.lang.Object 类。
6.2 方法重载(Overload)
对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个的重载方法。
重载方法必须满足以下条件:
在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的两个方法,Java虚拟机在运行时就无法决定到底执行哪个方法。参数签名是指参数的类型、个数和顺序。
标签:
原文地址:http://www.cnblogs.com/niche/p/4626541.html