Java 中的继承
  anLrwkgbyYZS 2023年12月30日 15 0


继承:可以基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域,在此基础上,还可以添加一些新的方法和域。

1. 继承性 

继承性: 把多种有着共同特性的多的类事物抽象成一个类,这个类就是多个类的父类。父类的意义在于可以抽取多个类的共性,代码复用,减少代码量。

例:三个类,Pupil类(小学生),MiddleSchoolStudent类(中学生类),CollegeStudent类(大学生类),他们有一个特性,都要有名字,学号,班级等等属性,都要去上课,考试等行为。

我们可以写一个父类 为 student类(学生),在Student类中实现名字,学号,班级等属性,上课,考试等行为,Pupil类、 MiddleSchoolStudent类、CollegeStudent类 继承 Student 类之后,就不需要自己去实现这些方法,可以直接去访问父类的。上课这个方法你本来要写三遍,继承之后你只用实现一次, 就实现了代码复用,减少代码量。 

子类继承的关键字:extends。 A 类  extends B 类,A是B的子类,B是A的父类。

Java 只能单继承 ,即一个类只能有一个父类(A继承B之后,不能在继承其他的类);可以多层继承(A继承B,B继承C);多个类继承一个类(B和C都继承A)。

2. 覆盖方法

子类可以覆盖父类中的方法。

父类,parent.java:

package inherit;

public class Parent {
    public void show() {
        System.out.println("Parent");
    }
}

 子类,Son.java 继承 parent.java。

package inherit;

public class Son extends Parent {
    @Override
    public void show() {
        System.out.println("son");
    }

    public static void main(String[] args) {
        Son son = new Son();
        son.show();
    }
}

运行截图:

Java 中的继承_父类

子类调用父类的方法:

package inherit;

public class Son extends Parent {
    @Override
    public void show() {
        super.show();
        System.out.println("son");
    }

    public static void main(String[] args) {
        Son son = new Son();
        son.show();
    }
}

运行截图:

Java 中的继承_父类_02

3. 子类构造器

子类使用super 来调用父类构造器,父类如下所示:

package inherit;

public class Parent {
    protected String name;

    public Parent(String name) {
        this.name = name;
    }
}

 子类如下所示:

package inherit;

public class Son extends Parent {

    public Son(String name) {
        super(name);
    }

    public void show() {
        System.out.println(this.name);
    }

    public static void main(String[] args) {
        Son son = new Son("sd");
        son.show();
    }
}

运行截图:

 

Java 中的继承_子类_03

没有显式调用父类构造函数,则默认调用父类无参构造函数。

父类的构造器调用以及初始化过程一定在子类的前面。父类如下所示:

package inherit;

public class Parent {
    protected String name;

    public Parent() {
        System.out.println("parent");
    }
}

 子类如下所示:

package inherit;

public class Son extends Parent {

    public Son(String name) {
        this.name = name;
    }

    public void show() {
        System.out.println(this.name);
    }

    public static void main(String[] args) {
        Son son = new Son("sd");
        son.show();
    }
}

运行截图:

Java 中的继承_System_04

3. 子类访问父类的权限

子类访问父类的权限,如下表所示:

父类成员访问属性

在父类中的含义

在子类中的含义

public

对所有人开放

对所有人开放

protected

只有包内其它类、自己和子类可以访问

只有包内其它类、自己和子类可以访问

缺省(default)

只有包内其它类可以访问

如果子类与父类在同一个包内:只有包内其它类可以访问

否则:相当于private,不能访问

private

只有自己可以访问

不能访问

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月30日 0

暂无评论

anLrwkgbyYZS
最新推荐 更多

2024-05-05