关于继承——extends

一、继承
1.子类在一些书中也被称为派生类,父类也被称为超类(Super Class)。
2.子类可进行代码的扩充(扩充属性和方法)。
3.继承的主要作用是对类进行扩充以及代码的重用

class 子类 extends 父类

4.若父类里没有提供无参构造,那么这个时候必须使用super()指明你要调用的父类构造方法
5.Java只允许单继承,不允许多重继承,但可以多层继承。即一个子类只能继承一个父类。
6.显式继承与隐式继承

class Person{
    private String name;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
}
class Student extends Person{
    public void fun(){
        System.out.println(getName());
    }
}
public class Excipise1109{
    public static void main(String[] args){
        Student s=new Student();
        s.setName("steven");
        System.out.println(s.getName());
        s.fun();
    }
}
//父类中的属性的确被子类继承了,但是子类继承的是所有非private操作,而所有的private操作无法被直接使用,即为隐式继承。

在这里插入图片描述
二、继承的限制

子类对象在进行实例化之前一定会首先实例化父亲对象。默认调用父类的构造方法后再调用子类构造方法进行子类对象初始化。

class Person{
    public Person(){
        System.out.println("Person类对象产生");
    }
}
class Student extends Person{
    public Student(){
        super();  //此语句在无参时写与不写一样
        System.out.println("Studnt类对象产生");
    }
}
public class Excipise1109{
    public static void main(String[] args){
        Student s=new Student();
        new Student();
    }
}

在这里插入图片描述
例:

class Person{
    private String name;
    private int age;
    public String getName(){
        return name;
    }
    public void setNmae(String name){
        this.name=name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }
}
class Student{
    private String name;
    private int age;
    private String school;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getSchool(){
        return school;
    }
    public void setSchool(String school){
        this.school=school;
    }
}
public class Excipise1109{
    public static void main(String[] args){
        Student s=new Student();
        s.setName("苏苏");
        s.setAge(21);
        s.setSchool("一中");
        System.out.println("姓名:"+s.getName());
        System.out.println("年龄:"+s.getAge());
        System.out.println("学校:"+s.getSchool());
    }
}

在这里插入图片描述
以上的程序用extends实现继承之后:

继承的目的是在原有的代码上继续进行功能的扩充,消除了结构定义上的重复

class Person{
    private String name;
    private int age;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }
}
class Student extends Person{
    private String school;

    public String getSchool(){
        return school;
    }
    public void setSchool(String school){
        this.school=school;
    }
}
public class Excipise1109 {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("苏苏");
        s.setAge(21);
        s.setSchool("一中");
        System.out.println("姓名:" + s.getName());
        System.out.println("年龄:" + s.getAge());
        System.out.println("姓名:" + s.getSchool());
    }
}

在这里插入图片描述

发布了61 篇原创文章 · 获赞 3 · 访问量 1223

猜你喜欢

转载自blog.csdn.net/qq_44847147/article/details/102987031