继承 2021-06-10

继承的特点

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
  • extends的意思是扩展。子类是父类的扩展
  • Java中类只有单继承,没有多继承
  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等
  • 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示
  • objeclei
  • super
  • 方法重写

实例演练:

  1. 创建一个Person类作为子类并在类中定义一个run方法,代码如下:
//父类
public class Person {
    public void run(){
        System.out.println("person");
    }
}
  1. 创建子类Student并定义一个study方法,创建子类Teacher并定义一个teach方法,代码分别如下:
//子类——学生类
public class Student extends Person{ 
    public void study(){
        System.out.println("study");
    }
}
//子类——教师类
public class Teacher extends Person{
    public void teach(){
        System.out.println("teach");
    }
}
  1. 接着创建一个main类,并分别创建三种对象,代码如下:
public class main {
    public static void main(String[] args) {
        Person person=new Person();     
        Student student=new Student();      
        Teacher teacher=new Teacher();        
     }
}
  • person对象能调用的方法如下,可以看出只有run方法

在这里插入图片描述

  • student对象能调用的方法如下,可以看出有run方法和study方法

在这里插入图片描述

  • teacher对象能调用的方法如下,可以看出能调用run方法和teach方法

在这里插入图片描述

综上,我们可以得到以下结论:

  • 父类不能调用子类的方法,只能调用自身的方法
  • 子类能调用父类和自身的方法
  • 子类不能调用其他子类的方法

tips:按Ctrl+H可查看关系树


四种修饰符

按优先级排序:

  • public
  • protected
  • dafault
  • private

我们在Person类中用四种修饰符定义四个方法:

//父类
public class Person {
    public void run(){
        System.out.println("person");
    }
    private void walk(){
        System.out.println("walk");
    }
    protected void eat(){
        System.out.println("eat");
    }
    void swim(){
        System.out.println("swim");
    }
}

可以看出看子类student除了walk方法其他的方法都可以调用

在这里插入图片描述

结论:在父类中用private修饰符定义的方法子类不能调用(父类中的属性同样适用)

另外,在父类中一般都是private属性,代码如下:

//父类
public class Person {
    private int money=100;
    
    public void setMoney(int money){
        this.money=money;
    }
    
    public int getMoney(){
        return money;
    }
}

父类Person中的私有属性money在子类中不能直接调用和查看,通常我们用另外两个方法set和return使得在子类中能对父类中的私有属性进行操作

public class main {
    public static void main(String[] args) {
        Person person=new Person();
        person.run();
        Student student=new Student();
        student.run();
        Teacher teacher=new Teacher();
        teacher.run();

        int money=student.getMoney();
        System.out.println(money);
        student.setMoney(200);
        money=student.getMoney();
        System.out.println(money);
     }
}

运行结果如下:

在这里插入图片描述

可以看到虽然money是父类中的私有属性,但是我们也能通过调用方法来输出money的值和对其进行修改


Object类

在之前的子类中我们可以看到除了父类和自身的方法以外还有很多没见过的方法,这些方法就是Object类中的方法

在Java中,所有的类都默认直接或者间接继承Object类,可以说Object类是所有类的祖宗类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超霸霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值