面向对象多态、抽象类

本文探讨了多态的灵活性和扩展性,区分了编译期类型与运行期类型,介绍了抽象类的使用场景和final关键字的作用。通过实例说明了如何利用多态仅通过父类接口处理不同子类对象,以及final如何限制继承和方法重写。
摘要由CSDN通过智能技术生成

多态(灵活且可扩充)
指的是同一种方法,对象的不同可能有不同的区别(游戏界面鼠标左键单机是射击,聊天界面是框选)

编译器类型 = 运行期类型;

编译期间:写代码时由于类型上升了父类类型,所以只能调用到父类中的定义成员

提升了代码的扩展性

代码中,调用子类的重写方法

子父类的时候,编译器类型就是父类,运行期类型就是子类

has-a:

eg:

男孩有一个手机

手机可以发信息

男孩可以发信息

Boys:

抽象类:

1.没有足够信息描绘一个对象

2.不能实例化对象,用abstract修饰:

public abstract class Boys{

public abstract void send();

}

3.一个类包含抽象方法,那么该类就必须定义成抽象类

适用条件:

子类有两种功能有部分差异时需要父类中存在抽象方法来解决(静态方法不可以声明在抽象类里,静态方法不可以被重写)

用多态:只用一个父类可以表示不同的子类对象

public class Person {

    public static void anmialsEat(Animals animals){
        animals.eat();
    }
    public static void main(String[] args) {
       
        Animals cat=new Cat();
        Animals dog=new Dog();
        anmialsEat(cat);
        anmialsEat(dog);
    }
}

有多态存在只需要使用其中一个方法即可

变量不存在被子类覆盖,方法存在被覆盖
对成员变量的调用

final关键字:

1.类不饿能被定义为抽象类或接口,不可被继承

2.方法在子类里不可以重写

3.参数在方法中不可被修改

4.属性定义时就必须直接赋值或者在构造方法中赋值,并且后期都无法修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值