理解Java中类的继承

本文详细介绍了Java中的类继承机制,包括继承的概述、子类重写父类方法、super关键字的使用、继承层次结构以及自动转型和强制转型的概念。通过实例演示了如何在子类中重写方法并利用super调用父类功能。
摘要由CSDN通过智能技术生成
一. 继承的概述

在Java中,一个类可以继承另一个类,前者(继承类)一般叫做子类(派生类),而相对应的后者(被继承的类)叫做父类(超类,基类)。

在同包下,子类可以继承父类中的属性和方法(但不能直接使用私有属性和私有方法),这样大大减少了代码量,避免一些重复的代码。

继承的格式是 public class 子类 extends 父类 {} ,使用 extends 关键字进行继承。例如:

public class Animal {
    public void eat(){
        System.out.println("eat something");
    }
}
​
public class Tiger extends Animal{
    
}

在上面例子里,Tiger 类继承了 Animal类,Tiger类的对象可以使用Animal类的eat方法。

二.子类重写父类中的方法

子类继承父类,子类的对象可以使用父类中的方法。

但有时父类中的方法不能完全满足子类的要求:比如上述的Tiger子类继承的eat方法是吃肉,而如果有另一个sheep子类的eat方法就应该是吃草,两个子类不能都完全使用父类中的方法,要根据自己的需求进行改写。

在子类中重新定义父类中的方法,这个过程就叫做子类重写父类中的方法。

重写需要满足两个要求:

  1. 两个类具有继承关系

  2. 重写的方法和父类的方法返回值类型,方法名,参数类型(个数,顺序)完全一样,子类方法的访问修饰符要大于等于父类

例如:

public class Animal {
    public void eat(){
        System.out.print("eat something");
    }
    public void makesound(){
        System.out.print("The animal is making a sound.");
    }
}
​
public class Tiger extends Animal{
    public void eat(){
        System.out.println("eat meat");
    }
    public void makesound(){
        System.out.println("The tiger is roaring.");
    }
}

三.super关键字

在子类中,我们有时候需要使用父类中的方法,如果说子类已经覆盖父类方法时,此时采用super完成对父类方法的调用,这样做可以保留父类中原有的功能。

例如:

public class Animal {
    public void eat(){
        System.out.print("eat something");
    }
    public void makesound(){
        System.out.print("The animal is making a sound.");
    }
}
​
public class Tiger extends Animal{
    public void eat(){
        super.eat();
        System.out.println("eat meat");
    }
    public void makesound(){
        super.makesound();
        System.out.println("The tiger is roaring.");
    }
}

在上述例子中,子类重写方法时首先使用super关键字对父类方法进行了调用。

四.继承的层次结构

与实现接口不同,Java中类的继承只能是单继承,即一个子类只能继承一个父类,不能继承多个父类。如同一个儿子只能有一个父亲。

但一个类可以间接的继承多个类,例如如果类C继承了类B,类B又继承了类A,那么类C就间接地继承了类A。在这种情况下,类C可以访问类A和类B的属性和方法。

五.自动转型与强制转型

自动转型(也叫向上转型),如果子类继承了父类,可以把子类自动转型成父类:

B extends A

A a = new B();

调用看左边,执行看右边。

也就是先从左边的父类对象中找到方法,看右边的子类有没有重写过该方法,如果有就优先执行子类中重写的方法。

自动转型后该对象只能调用子类中重写的方法

使用强制转型(向下转型)来调用子类中特有的方法,前提:该对象先进行了自动转型。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值