胡博君讲Java中的继承

继承概念:

1、继承是面向对象的三大特征之一
2、被继承的类称为父类(超类),继承父类的类称为子类(派生类)
3、继承是指一个对象使用另一个对象的属性和方法
4、通过继承可以实现代码重用



继承的语法:

//父类
class  Person{
   String name;
   String sex;
   public void eat(){
   System.out.println("学会了吃饭");  
 }
}
//子类
class  Student  extends  Person{
     int  chengji;
    public  void  study(){
   System.out.println("我能学习");
   }
}

语法就是子类中的"extends"关键字。



继承的限制:

1、Java只能实现单继承,也就是一个子类只能有一个父类
2、允许多层继承,即:一个子类可以有一个父类,一个父类还可以有其他父类
3、继承只能继承非私有的属性和方法
4、构造方法不能被继承



子类实例化过程中的规定:

子类在实例化的时候一定要先调用一次父类的构造方法,这是一个规定,可能会出现一下几种情况:

1、父类中有默认的构造方法Person();无参数的构造方法

//父类

class  Person{
protected String name;
protected String sex;
private String daqiu;

public Person(){
System.out.println("父类");
}
public Person(String name,String sex){
this.name = name;
this.sex =sex ;
}
public void eat(){
System.out.println("学会了吃饭:"+name);
}
}

//子类

class Teacher extends Person{
String  teach;
Teacher(){
System.out.println("实例化一个老师");
}
public void  teach(){
System.out.println("老师");
}
}

这种情况下Teacher  t  = new Teacher();  ,实例化一个子类老师类的时候,会默认调用父类中的无参数构造方法。这样就符合原则子类实例化的时候必须先调用父类构造方法。

2、父类中没有无参数构造方法

//父类

class  Person{
protected String name;
protected String sex;
private String daqiu;


public Person(String name,String sex){
this.name = name;
this.sex =sex ;
}
public void eat(){
System.out.println("学会了吃饭:"+name);
}
}

//子类

class Teacher extends Person{
String  teach;
Teacher(){

               super("胡博君","男");
System.out.println("实例化一个老师");
}
public void  teach(){
System.out.println("老师");
}
}

这种情况下呢,在实例化子类Teacher  t = new Teacher();的时候,由于父类没有默认的无参数构造方法,而系统只能调用默认无参数构造方法,但是又要为了满足子类实例化的时候必须先调用一次父类构造方法的要求,所以我们在子类构造方法中填写上父类构造方法的调用写法super("胡博君","男");。这样呢虽然父类中没有无参数构造方法,系统不能自动调用了,但是我们可以手动在子类构造方法中调用父类中的任何一种形式的构造方法让其满足子类实例化的时候必须先调用父类构造方法的要求。

注意:super和this其实意义很接近,super属于父类对象,this属于当前对象;this()表示本类构造方法、super()表示父类构造方法;super表示的父类构造方法只能写在子类构造方法中的头一行,这样才能保证先执行父类构造方法。



欢迎大家收看我的在线视频:

http://v.youku.com/v_show/id_XODQ1NjU0NDc2.html   这是其中的一个视频连接,大家可以拖动到优酷视频下方,订阅我的账号,因为以后我会有更多视频免费提供

百度搜索:输入Fcs_D调的码农 ,或者输入"胡博君"就能看到我的很多视频

或者加我的微信号:fcsboy     我可以及时通过微信通知你们

QQ学习群:237053693


你可能感兴趣的:(java,super是放在第一行,super表示父类构造方法,继承中的super怎么用,胡博君)