什么是继承?
在Java中,子类继承父类时会继承父类的属性以及方法。以动物类为例,动物类具有体重、毛发的颜色、器官等属性,它的一个子类(如猫类)在继承动物类时就会继承它的这些属性;对于行为,动物有捕猎、运动这种通用的方法,但是不同的子类在继承方法时的具体行为是不同的,猫类在继承捕猎时捕捉的是鱼、老鼠,而鸟类捕捉的是虫子。
继承的一些要点:
关键字:extends 语法:public 子类 extends 父类 { };
Java中的继承是单继承,子类只能直接继承它的父类而非父系类。在继承父类时,子类可以访问除了private以外的所有属性和接口。
继承有什么好处?
继承能够提高代码的复用性,让代码更加简洁。父类中已经提到属性、行为,我们在子类中就不用再重新写一遍了,这样不仅看起来简洁,维护起来也更加方便。更重要的是,继承让类和类之间产生了关联,因此才有了多态。多态,是指父类中的一个行为,在不同的子类中会以不同的方法实现。可以在子类中重写父类的方法,子类创建的对象会优先调用子类中重写好的方法。在下面的代码中,父类是学生类,两个子类分别为UNstudent和MIDstudent,二者在各自的类中重写了read这一行为,所创建的对象就会优先调用自己的read。
父类与子类之间会涉及到转型的问题。如果我们创建了一个学生对象stu,给它赋值一个大学生的对象unstu,这么做是安全的。我们可以说大学生是学生,但反过来就不行。也就是说,在赋值转型时,等号左侧的必须是父系类的对象。否则就有可能发生危险
class Student {
public void read (){
System . out . println ( " 读书 " );
}
}
class UNStudent extends Student {
public void printUNStudent (){
System . out . println ( "Unstudent" );
}
public void read (){
System . out . println ( "UNStudent 读书 " );
}
}
class MIDStudent extends Student {
public void read (){
System . out . println ( "MIDStudent 读书 " );
}
}
class Manage {
public static void main ( String [] args ){
// byte max:127
// // b = 127 b++;//
// for(byte b = 0;b<200;b++){
// System.out.println (b);
// }
UNStudent unstu = new UNStudent ();
Student stu = unstu ;
stu . read ();
UNStudent unstu2 = ( UNStudent ) stu ;
unstu2 . printUNStudent ();
MIDStudent midStu = new MIDStudent ();
Student stu2 = midStu ;
stu2 . read ();
// 强制转型之前 必须验证对象的原始类型
if ( stu2 instanceof UNStudent ){
UNStudent unstu3 = ( UNStudent ) stu2 ;
unstu3 . printUNStudent ();
} else {
System . out . println ( " stu2 is not UNStudent Class Type" ); }
}
}