1、继承的概念
继承:从已有的类中派生出一个新的类,使得新类拥有已有类中所有的非私有的属性和方法,并能扩展出新的属性和方法。
超类:父类:已有的类
派生类:子类:新的类
2、继承的限制
JAVA是单继承机制,一个类只能有一个父类;
但是可以多层继承,一个类的父类也可以有自己的父类,相当于子类继承了父类也继承了父类的父类;
子类不能继承父类的私有成员
3、子类实例化过程
子类实例化时,先执行父类的构造方法,实例化父类之后,再实例化子类。
通常,如果子类的构造方法没有显式写出来,而是使用了默认无参的构造方法,父类必须存在无参的构造方法,否则,编译报错,这时在子类中往往隐含了super()调用父类,如下:
class A{
private String name;
public void setName(String name){
this.name = name;
}
}
class B extends A{
private int age;
}
上面的代码等价于:
class A{
private String name;
public void setName(String name){
this.name = name;
}
}
class B extends A{
private int age;
B(){
super();
}
}
如果子类中定义了构造方法,则在构造方法中可以通过super调用父类带参的构造方法,也可以是么都不写,调用父类默认无参的构造方法。4、方法的重写
方法的重写发生在继承关系中,子类重写父类的相关方法。子类中重写与父类重名的方法。
被重写的方法的访问权限不能为private。
子类的访问权限不能小于父类的访问权限。
如下代码不是方法的重写,而是方法的重新定义:class A{
void a(){
};
}
class B extends A{
public void a(){
}
}
方法重写以后,不论是父类中,还是其他地方,所有调用方法都调用重写后的方法,若需要调用父类中的原方法,只能通过super.方法()调用。
5、继承的应用实例
public class ExtendsExample {public static void main(String args[]){
Student student = new Student("张三","c09123");
System.out.print(student.getInfo());
}
}
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public Person(String name){
this.name = name;
}
public String getInfo(){
return "姓名:"+this.name;
}
}
class Student extends Person{
private String num;
public void setNum(String num){
this.num = num;
}
public String getNum(){
return this.num;
}
public Student(String name,String num){
super(name);
this.num = num;
}
public String getInfo(){
return super.getInfo()+",学号:"+this.num;
}
}