Java中继承的定义与使用

Java语言是一门面对对象设计的语言,而面对对象设计有三大特征,它们分别是封装、继承、多态。

今天要讲的是三大特征中的继承;

概述:继承的主要作用在于,在已有的基础上进行功能的扩充操作(可重用)

要使用继承,必须使用“ is - a ”原则
何为is - a 原则:
例:student is a person。
只要不符合这种规定则不能用继承;


看下面一段代码:

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; 
    }
}

class Student{
    private String name;
    private int age;
    private String school;
    public void setname(String name){
        this.name = name;
    }
    public void setage(int age){
        this.age = age;
    }
    public void setschool(String school){
        this.school = school;
    }
    public String getname(){
        return this.name;
    }
    public int getage(){
        return this.age; 
    }
    public String getschool(){
        return this.school;
    }
}


public class Day5{
    public static void main(String[] args){
        Student stu = new Student();
        stu.setage(20);
        stu.setname("zangsan");
        stu.setschool("qinghua");
        System.out.println(stu.getage());
        System.out.println(stu.getname());
        System.out.println(stu.getschool());
    }
}

这是一段很浅显易懂的代码,我们定义了一个“person”类和一个“student”类,我们可以看到,这两个类中的代码基本一模一样,只是在student类中加了一个school属性,这样的代码看起来太过繁杂,我们这时便可以想到继承。


继承使用:子类使用extends继承父类

无需重复编写代码的情况下拥有父类的⭐所有⭐成员

注意:java只允许单继承不允许多继承(一个类只能继承一个父类)

看下面使用继承后的代码:

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; 
    }
}

//                             *****************继承********************
class Student extends Person{
    
     private String school;
     public void setschool(String school){
         this.school = school;
     }
     public String getschool(){
         return this.school;
     }
}


public class Day5{
    public static void main(String[] args){
        Student stu = new Student();
        stu.setage(20);
        stu.setname("zangsan");
        stu.setschool("qinghua");
        System.out.println(stu.getage());
        System.out.println(stu.getname());
        System.out.println(stu.getschool());
    }
}

此代码比原先的简洁多了,而且可以清楚的认识到这两个类之间的关系;

父类也叫   基类
子类也叫   派生类


下面来看一下子类与父类中的构造方法:
看一段代码:

class Person{
    public Person(){
        System.out.println("Person类的构造方法");
    }
}

class Student extends Person{
    public Student(){
        System.out.println("Student类的构造方法...");
    }
}

public class Day5{
    public static void main(String[] args){
        Student stu = new Student();
    }
}

这段代码的输出结果是:
Person类的构造方法
Student类的构造方法...

由此我们可以观察到 :
1.子类对象在实例化前一定会首先实例化父类对象。
2.先调用父类构造方法,
后再调用子类构造方法

 

你可能感兴趣的:(Java基础学习)