在Java中使用关键字extends来实现继承,下面的代码定义了一个新的类Student,它继承了最初定义的People类:
这是一个很经典的代码例子
public class Student extends People{
private String sId; //学号
//Constructor
public Student() {
this("","","");
}
public Student(String name,String id,String sId){
super(name,id);
this.sId = sId;
}
public void sayHello(){
super.sayHello();
System.out.println("I am a student of department of computer science.");
}
//get & set method
public String getSId(){
return this.sId;
}
public void setSId(String sId){
this.sId = sId;
}
}
从上面代码解释几个非常困惑新手的问题:
第一个问题:
代码中使用了关键字super,super究竟是什么意识,为什么要用super?
super关键字主要有两个作用,一是调用父类的构造方法,二是调用父类的方法。记住了,一个是构造方法,一个是方法,而且super只负责调用父类
第二个问题:
子类比父类具有更多的属性和功能。“is-a”规则表明子类的每个对象都是父类的对象,例如每个学生都是人。因此,无论何时只要在程序中需要一个父类对象时都可以使用一个子类的对象来替代它,反过来则不行。
例如,可以把子类的对象赋给父类变量:
People p = new Student(“godkun”,”007”,”1314520”);
第三个知识点是:
在Java中有一个非常特殊的预定义类,那就是Object类。在Java中Object类是所有类的祖先,每个类都有Object类扩展而来。
在定义类时如果不指定父类,则Java会自动把Object类作为要定义类的父类。
例如People类就是Object类的子类。
因此可以使用Object类的变量引用任意类型的对象。
代码如下
Object obj = new People(“Jack”,”0001”);
很多人知道Objcet是祖先,可是不知道可以这么用。