Java学习——继承的定义与使用

一、继承

继承时面向对象的第二大特征,继承的主要作用在于无需重写原有类代码的基础上,就有原有类所有属性与方法,并且可以对原有类进行功能上的拓展。继承强调的是一直可重用的观念。

如果我们需要一个Person类,一个Student类,2个类都需要姓名、年龄等的一些属性,如果我们直接写这2个类会发现有很多重复代码,无论是人还是学生都有姓名、年龄这些属性,而且很容易发现学生是属于人的范畴的。只是学生描述的范围更小,更加具体,也具有一些特定的属性,比如听课,不一定每个人都要听课。这个时候如果想要消除结构定义上的重复,就需要用到继承。

在Java中,继承使用extends关键字来实现,定义的语法如下:
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;
    }
}
class Student extends Person{
}
public class Test{
    public static void main(String[] args) {
        Student st1 = new Student();
        st1.setName("Tom");
        st1.setAge(20);
        System.out.println("name is "+st1.getName() + "\nage is "+st1.getAge());
    }
}

通过上述代码可以发现,当发生了类继承关系之后,子类可以直接继承父类的操作,可以实现代码的重用。子类最
低也维持和父类相同的功能。子类可以进行功能的扩充。例如:扩充属性和方法。

class Student extends Person{
    private String School;
    public void setSchool(String School){
        this.School = School;
    }
    public String getSchool(){
        return this.School;
    }
}

二、继承的特点

1.子类对象在进行实例化前一定会首先实例化父类对象。默认调用父类的构造方法后再调用子类构造方法进
行子类对象初始化。实际上在子类的构造方法中,相当与隐含了一个super(),值得注意的是如果父类中有无参构造那么这个super()可以不用写,如果父类没有提供无参构造方法那么这个super()必须写,明确指明你要调用父类的构造方法。

2.Java只有单继承,没有多继承,但可以多层继承。

3.在进行继承的时候,子类会继承父类的所有结构。(包含私有属性、构造方法、普通方法)但是这个时候
需要注意的是,所有的非私有操作属于显示继承(可以直接调用),所有的私有操作属于隐式继承(通过
其他形式调用,例如setter或getter)。

猜你喜欢

转载自blog.csdn.net/eve8888888/article/details/83183739