Java中类的继承详解

一.Java中类继承的关键字:extends

(1)例如,新建一个学生类

public class Student{

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

//再新建一个大学生类,即可以继承自学生类

public class UNStudent extends Student{

  }           //子类会继承父类中所有的方法和属性,当私有的不可以直接调用

//也就是说,当父类的限定符为public,protected和默认时,均可以直接继承

(2)注意!! 当父类自己定义了带参数的构造方法,那么在子类的构造方法中一定要自己调用一下!

public class Student{

private String name;

public Student(String name){

this.name = name;

}

}

public class UNStudent extends Student{

         public Student(String name){      //在子类中, 必须再次写带参数的构造方法。

                 super("");              //若父类中仅有一个无参数的构造方法,那么不必再在子类中写构造方法

}

二.Java子类中方法的重写

    有时候子类中要求有与父类相同的方法,但是实现的功能不同,这时候就要用到方法的重写

    方法重写的要求:返回值类型、方法名以及参数类型都必须与父类相同

例如,学生都有其学习方法

public class Student{

public void study(){

System.out.println("父类的学习方法!");

}

}

但是大学生的学习方法会和中学生或者小学生的不同,因此子类的方法就必须各自重写

public class UNStudent extends Student{

public void study(){

System.out.println("大学生类的学习方法!");

}

}

//注意!!子类对方法重写后,其访问修饰符的权限必须大于等于父类!

//Java的访问修饰符权限的顺序依次为 public>protected> (default)> private

//当父类方法的限定符为public时,子类必须为public

三.Java中类的自动转型和强制转型

我们用一段代码来解释自动转型和强制转型

public class Main {

public static void main(String[] args) {

Student un  = new UNStudent();

  //这行代码即为自动转型,注意我们创建的是一个学生对象,但是在new后面调用的是子类的方法

un.study();  //自动转型后子类不可以调用自己特有的方法,只能调用重写过的代码

//当需要调用子类中自己特有的方法时,需要实行强制转型,方法如下(类似于数据类型的强制转换)

UNStudent uns = (UNStudent)un;    

uns.demo();  //此demo()方法是大学生类自己特有的,在父类中不存在

四.关于父类和子类对象的调用

比如新建一个老师类

public class Teacher {

public void teach(Student s){    //需要传人一个学生对象

s.study();

}

}

//并新建一个老师对象

Teacher t = new Teacher();

//当老师调用自己的方法时,传入的对象要求为Student类

t.teach(st);  //注意,此时传入的既可以为Student类的对象,也可以传入Student所有子类的对象

//也就是说,在类的继承中,所有类要实现某个方法,只需调用同一个方法名

五.总结

    Java中利用继承机制将类一级一级联系起来,学好继承是后面学好Java的基础,一定要注意Java中继承的声明和使用。

猜你喜欢

转载自forandy223.iteye.com/blog/2221140