什么是继承?类的继承如何重写父类?

继承的概念

在Java中,类的继承是指在一个现有类的基础上去产生一个新的类,产生的新类被称作子类,现有类被称作父类,子类会自动拥有父类的属性和方法。例如定义一个Animal类作为父类,该类拥有一个call()方法,当子类Cow和Sheep继承自Animal类时,就会自动拥有call()方法,接下来通过一个图例来描述类的继承关系,如图3-11所示。

图3-11动物继承关系图

在程序代码中,如果想定义一个类继承另一个类,需要使用extends关键字。如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类就是默认继承Object类。Object类是所有类的父类,那么该类中的方法适用于他的所有子类,其类中常用的方法有toString()、hashCode()方法等。

注意:

在类的继承中,需要注意以下几个问题,具体如下:

1、在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。例如Cow这个类继承Animal之后,就不允许继承其他类。

2、多个类可以继承一个父类,例如Cow和Sheep都可以继承Animal类。

3、在Java中,多层继承是允许的,即一个类的父类可以再去继承其他的父类,例如Zebra类继承自Horse类,而Horse类又可以去继承Animal类,即子孙三代。

重写父类方法

在继承关系中,子类会继承父类中定义的方法,但子类也可以在父类的基础上拥有自己的特征,即对父类的方法进行重写。需要注意的是,在子类中重写的方法必须与父类被重写的方法具有相同的方法名、参数列表以及返回值类型。接下来通过一个案例来演示如何实现子类重写父类的方法。具体步骤如下:

1.创建Animal类

创建一个Animal类,并在类中定义两个方法call()和sleep(),分别在两个方法中输出“动物发出的声音”和“动物在睡觉”的信息,如文件3-19所示。

文件3-19Animal.java

package com.itheima.example10;
// 定义Animal类
public class Animal {
    // 定义动物叫的方法
    public void call()
    System.out.println("动物发出声音...");
    }
    // 定义动物睡觉的方法
    public void sleep() {
    System.out.println("动物在睡觉...");
    }
}

2.创建Cow类创建一个Cow类,使其继承Animal类,并在Animal类重写call()方法,如文件3-20所示。

文件3-20Cow.java

java1package com.itheima.example10;
// 定义Cow类继承Animal类
public class Cow extends Animal {
    // 定义一个打印name的方法
    public void call() {
        System.out.println("哞...");
    }
}

3.创建测试类

创建一个测试类Example10,分别调用call()方法和sleep()方法,如文件3-21所示。

文件3-21Example10.java

package com.itheima.example10;
public class Example10 {
    public static void main(String[] args) {
        Cow c = new Cow(); // 创建一个Cow类的实例对象
        c.call(); // 调用Cow重写的call()方法
        c.sleep(); // 调用父类Animal的sleep()方法
    }
}

运行结果如图3-12所示。

创建测试类

图3-12运行结果从图3-12的运行结果可以看出,当子类继承父类的时候,会拥有父类中所有的成员,由此可知,在调用sleep()方法时,会自动调用父类的sleep()方法。当子类重写了父类方法之后,创建的子类对象会自动调用重写的方法,即调用的是子类的call()方法。

注意:子类重写父类方法时,不可以使用比父类中被重写的方法更严格的访问权限,如:父类中的方法是public的,子类的方法就不可以是private的。

什么是继承?Java中如何声明一个类继承另一个类?

实战教程之Java基础知识精华部分

如何理解单继承?单继承的语法格式介绍

Java怎样正确重写父类?

传智教育课程

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/254067.html

(0)
上一篇 2022年5月9日
下一篇 2022年5月9日

相关推荐

发表回复

登录后才能评论