继承,方法重写

继承

为什么使用继承

在这里插入图片描述
因为在很多情况下有许多类有共同的属性和方法,我们可以把这些共同的合并到一个父类中。
为了减少代码冗余和方便扩充。

使用继承优化后

在这里插入图片描述

如何使用继承

在这里插入图片描述
继承是代码重用的一种方式:将子类共有的属性和行为放到父类中。

Super关键字来访问父类的成员

1. Super只能出现在子类的方法和构造方法中
2. super 调用构造方法时,只能是第一句
3. super不能访问private的成员

子类访问父类成员

访问父类构造方法:

            	Super();
              Super(name);

访问父类属性:

             Super.name;

访问父类的方法:

  Super.print();

注:
super表示关键字,super代表父类对象。
在子类构造方法中,super 调用父类构造方法时,只能是第一句。

子类不能继承父类的:

  1. Private成员
  2. 子类与父类不在同包时,使用默认访问权限的成员
  3. 构造方法。(不能被继承也不能被重写只能被加载)

访问修饰符(protected):
可以修饰属性和方法
本类、同类、子类可以访问
访问修饰符的总结:
在这里插入图片描述
多重继承关系的初始化顺序:
自上而下的继承:先父类的父类->再到父类->子类
在这里插入图片描述
在子类中:父类的无参构造可以不写,会默认加载;带参构造要写。

方法重写

在这里插入图片描述
实例:
先是主类Pet定义了共同拥有属性和方法
在这里插入图片描述
狗狗类使用方法重写:
在这里插入图片描述
Test测试类:在创建对象是赋值了小黑和拉布拉多;但是在后面又传入了中华田园覆盖了拉布拉多。
在这里插入图片描述
结果为:方法重写实现了。
在这里插入图片描述

方法重写的规则

  1. 方法名相同
  2. 参数列表相同
  3. 返回值类型相同或者是其子类
  4. 访问权限不能严于父类
    在这里插入图片描述
Java中,继承方法重写是实现多态的关键特性。首先,我们来看一下如何通过继承创建一个基础类,并在其子类中重写方法。 ```java // 定义一个基类 Animal class Animal { // 普通方法,可以被所有动物实例共享的行为 void eat() { System.out.println("Animal is eating"); } } // 子类 Dog,从 Animal 类继承并重写 eat 方法 class Dog extends Animal { // 方法重写,Dog 版本的 eat 方法 @Override void eat() { System.out.println("Dog is eating with a bone"); } } public class Main { public static void main(String[] args) { // 创建 Animal 类型的对象,实际上是 Dog 的实例 Animal animal = new Dog(); // 调用 eat 方法,因为多态,会执行 Dog 类的 eat 实现 animal.eat(); // 输出 "Dog is eating with a bone" // 显示继承和多态的好处,比如统一处理动物吃的行为,而不需要关心具体的种类 animal = new Cat(); // 假设有一个同样继承自 Animal 的 Cat 类 animal.eat(); // 这里也会调用 Dog 或 Cat 中的具体实现,但代码只需处理 Animal 对象即可 } } ``` 在这个例子中: 1. `eat` 方法在基类 `Animal` 中声明,表示所有动物都有吃的能力。 2. 子类 `Dog` 继承了 `Animal` 并重写了 `eat` 方法,提供了特定于狗的吃的方式。 3. 在 `main` 函数中,虽然我们创建的是 `Dog` 对象,但由于多态,当我们使用 `animal` 引用调用 `eat` 时,实际执行的是 `Dog` 类的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值