继承

1. 什么是继承?
Java中提供一个关键字extends(扩展),用这个关键字,我们可以让一个类和另一个类建立起父子关系。

Student称为子类(派生类),People称为父类(基类 或超类)。
作用:当子类继承父类后,会具有父类的属性和方法,同时,子类还可以添加其他的的方法或属性,以扩展父类的功能

2.继承的好处
1.提高了代码的复用性(多个类相同的成员可以放在同一个类中)
2.提高了代码的维护性(如果方法的代码需要改,修改父类中的方法即可)

3.继承的特点
1.将子类公共的属性抽取出来生成父类属性用于继承。
2.子类可以继承父类的属性和行为,但是子类不能继承父类的构造方法。 Java是单继承模式,即一个类只能继承一个直接父类。 Java不支持多继承、但是支持多层继承。
3.Java中所有的类都是Object类的子类。
4.子类不可以的继承父类的构造方法,子类有自己的构造方法,父类构造器用于初始化父类对象。
5.子类可以继承父类的私有成员,只是不能直接访问。

4.继承中变量访问的特点
在子类方法中访问一个变量:
子类局部范围找 --没有–>子类成员范围找 --没有–> 父类成员范围找。
注意:
如果子父类中,出现了重名的成员变量,通过就近原则,会优先使用子类的
如果一定要使用父类的,可以通过super关键字,进行区分。

package com.extend.java;
public class Person {              //父类Person
    //数据成员
    private String name;
    private String sex;
    private int age;
    public Person(){//无参构造
    }
    public Person(String name,String sex,int age){//有参构造
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    //setter,getter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    //功能方法,获取某人的信息
    public String getPerson(){
        return "姓名:" + this.name + ",性别:" + this.sex + ",年龄:" + this.age;
    }
}

package com.extend.java;

public class Student extends Person{              //Person类的子类Student
    //子类的数据成员
    private String className;
    //子类构造方法
    public Student(){//无参构造

    }
    public Student(String name, String sex, int age, String className){//有参构造
        super(name, sex, age);
        this.className = className;
    }
    //setter,getter方法
    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
    //功能方法,获取某人的信息
    public String getStudent(){
        return this.getPerson() + ",班级:" + this.className;
    }
}
package com.extend;

import com.extend.java.Student;

public class Demo006 {
    public static void main(String[] args) {
        Student swk = new Student("沈括","男",16,"物理实验班");
        System.out.println(swk.getStudent());
        System.out.println(swk.getPerson());//子类可以直接访问从父类继承的public方法

        //子类访问从Person类继承的getName()方法
        System.out.println("姓名:" + swk.getName());
    }
}

结果展示
在这里插入图片描述

  • 19
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值