Java---继承

Java基础创作日记 Day04
时间:2021年2月5日下午 晴
趁兴把之前看的一些知识点再总结一下

继承的作用

  1. 实现多态
  2. 实现代码的多重利用
  3. 实现继承体系

实现继承

通过extends关键字

继承的特点

  1. Java中只支持单继承(一个类只能有一个直接的父类)
  2. 多个类可以同时继承一个父类(一个父类可以有多个子类)
  3. Java可多重继承(可以存在子类的父类也有父类)
  4. 子类可以获得父类的可继承的成员
  5. 子类被实例化的时候父类的构造方法也会被调用

重写父类方法

我们继承的子类一般会对继承来的一些成员进行修改
我们可以重写这些方法
重写:
需要保证和继承来的方法具有相同的方法名、参数列表、返回值类型
例:
问题:写一个动物类,再通过动物类来创建一个狗类和猫类
问题分析:猫和狗都是动物,都会叫,不过叫声不一样,可以在类中写一个shout()方法,然后继承后进行重写,都有年龄属性Age
代码:

public class external_class {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.shout();
        dog.print_Age();
        Cat cat=new Cat();
        cat.shout();
        cat.print_Age();
    }
}
class Animal{
    private int Age=100;

    public int getAge() {
        return Age;
    }

    public void setAge(int age) {
        this.Age = age;
    }

    public void shout(){
        System.out.println("我是动物");
    }
}
class Dog extends Animal{
    public void shout(){
        System.out.println("汪汪汪");
    }
    public void print_Age(){
        System.out.println("这只狗"+getAge()+"岁了");
    }
}
class Cat extends Animal{
    public void shout(){
        System.out.println("喵喵喵");
    }
    public void print_Age(){
        System.out.println("这只猫"+getAge()+"岁了");
    }
}

父类:Animal,有两个创建的成员,Age,创建时初始化为100。然后成员方法:shout()
在创建两个Animal的子类Dog和Cat
重写shout()方法
然后,分别打印年龄
结果:
在这里插入图片描述

super关键字

因为在一般情况下,我们重写了父类的方法,那么后代就不能再访问父类的原方法了,所以为了可以再能访问父类的被重写的方法,我们引入关键字super,super还可指定实例化子类的时候调用父类的哪个构造方法

super作用

调用父类被重写成员的原体

在我们重写了父类的方法情况下还可以访问父类原成员
语法:super.成员名(成员名可为变量名)
在这里插入图片描述

指定实例化子类时调用父类的哪个方法

因为我们知道,实例化子类的时候,父类的构造方法也会被调用,我们可以通过super关键字来调用不同的父类构造方法
语法:super()super(参数列表)
根据我们填入的不同的实参可以调用不同的父类构造方法。(前提父类得有那些构造方法)在这里插入图片描述在这里插入图片描述
在这里插入图片描述
同时需要注意,要想调用父类指定的构造方法需要把子类的构造方法也重写,同时把super()super(参数列表)写在子类的构造方法第一行,并且只能出现一次

如果不指定的话会自动调用父类的无参构造方法

全部代码

public class external_class {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.shout();
        dog.print_Age();
        Cat cat=new Cat();
        cat.shout();
        cat.print_Age();
    }
}
class Animal{
    public Animal(){
        System.out.println("Animal被创建了");
    }
    public Animal(String name){
        System.out.println("名为"+name+"的Animal被创建了");
    }

    private int Age=100;

    public int getAge() {
        return Age;
    }

    public void setAge(int age) {
        this.Age = age;
    }

    public void shout(){
        System.out.println("我是动物");
    }
}
class Dog extends Animal{
    public Dog(){
        super("Dog");
    }
    public void shout(){
        System.out.println("汪汪汪");
    }
    public void print_Age(){
        System.out.println("这只狗"+getAge()+"岁了");
        System.out.println("接下来是animal的叫");
        super.shout();
    }
}
class Cat extends Animal{
    public void shout(){
        System.out.println("喵喵喵");
    }
    public void print_Age(){
        System.out.println("这只猫"+getAge()+"岁了");
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值