继承

继承:在已有类的功能上继续进行功能的扩充。

继承的目的:子类可以重用父类中的结构,可以实现功能的扩充,子类可以定义比父类更多的内容,描述的范围可以更小。

 

class 子类 extends 父类 {}
//了解继承的概念
class
Person{ private String name; private int age; public void setName(String name){ this.name = name; } public void setAge(int age){ this.age = age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } public String getInfo(){ return "name = " + this.name + "\n" + "age = " + this.age; } public Person(){} public Person(String name, int age){ this.name = name; this.age = age; } } //继承Person类,且不定义任何新的功能 class Student extends Person{} public class Demo{ public static void main(String args[]){ Student std1 = new Student(); //实例化一个Student对象 std1.setName("韩梅梅"); //调用setName()方法。这个方法继承自Person类 std1.setAge(25); System.out.println(std1.getInfo()); } } /*------------------------------------------ E:\Javacode>javac Demo.java E:\Javacode>java Demo name = 韩梅梅 age = 25 E:\Javacode>*/
//子类进行实例化的时候一定会先实例化父类对象
class Person{
    public Person(){
        System.out.println("Person类实例化!");
    }
}

class Student extends Person{
    public Student(){
        System.out.println("Student类实例化!");
    }
}

public class Demo{
    public static void main(String args[]){
        Student std = new Student();
    }
}
/*---------------------------------------------
E:\Javacode>java Demo
Person类实例化!
Student类实例化!

E:\Javacode>*/

 super()--表示子类构造方法调用父类的构造,只允许放在构造方法的首行。

class Student extends Person {
    public Student(){
        super();    //写不写的效果一样,实例化父类对象
        System.out.println("一个新的Student对象产生");
    }
}

如果父类没有提供无参构造,则必须利用  super() 明确调用有参构造

class Student extends Person {
    private String school;
    public Student(String name, int age, String school){
        super(name,age);
        this.school = school;
    }
    
    public void setSchool(String school){
        this.school = school;
    }
    public String getSchool(){
        return this.school;
    }
    
    public String getInfo(){
        return
        "school =" + this.school;
    }
}

 

继承的限制:

1. Java中不允许出现多重继承,只允许多层继承。

//错误的继承
class A{}
class B{}
class C extends A,B{}

//正确的继承
class A{}
class B extends A{}
class C extends B{}

2. 在继承关系定义的时候,子类实际上可以继承父类中所有的操作结构,但是对于私有操作属于隐式继承(不能直接访问),非私有操作属于显示继承。

3. 继承一旦发生,所有的操作就都可以被子类使用。

 

posted @ 2019-02-19 13:00  眉毛病  阅读(197)  评论(0编辑  收藏  举报