7.面向对象的编程

面向对象的编程

1 接口、抽象类、具体类

  • 接口

    • interfaceClass: 定义和实现ADT
    • 接口之间可以继承与扩展extends
    • 一个类可以实现implements多个接口(从而具备了多个接口中的方法)
    • 一个接口可以有多种实现类
    • 接口中的每个方法在所有类中都要实现
    • 通过default方法,在接口中统一实现某些功能,无需在各个类中重复实现它
      在这里插入图片描述

    在这里插入图片描述

  • 抽象类

    • 至少包含一个抽象方法abstract的类称为抽象类,抽象类只有定义没有实现,不能实例化。抽象类中允许有具体方法,但是至少得有一个抽象方法
    • 继承某个抽象类的子类在实例化时,所有父类中的抽象方法必须已经实现。
  • 具体类

    • 具体实现接口的类
      在这里插入图片描述

2 继承、override

  • 如果子类想要覆盖重写父类中的函数,则要和父类保持相同的方法签名。
  • 返回值可以相同
  • 如果不相同,则子类方法中的返回值一定是父类方法中返回值的子类型
  • 实际执行时调用哪个方法,运行时决定。
  • 当子类包含重写超类方法的方法时,它还可以使用关键字super.调用超类方法
    在这里插入图片描述

3 多态、overload

  • overload重载

    • 一个方法有多个重名的实现
    • 必须有不同的参数列表
    • 返回值可以相同/不同
    • 除了名字相同之外,各个方法之间没有任何关系
    • 重载使用静态类型检查传递的参数或者返回类型,
    • 在编译阶段决定具体执行哪个方法(重写是在运行时进行动态检查的)
      在这里插入图片描述
  • 多态的3种形态:

    • 特殊多态(overload重载)
    • 参数化多态(泛型)
    • 子类型多态、包含多态(子父类继承)

4 泛型

  • 泛型变量E、泛型方法E、泛型类<E>、泛型接口<E>

    public interface List<E> //泛型接口
    
    public class Pair<E> { //泛型类
        private final E first, second; //泛型变量
        
        public Pair(E first, E second) { //泛型方法
            this.first = first;
            this.second = second;
        }   
        public E first() { return first; }
        public E second() { return second; }
    }
    
  • 类、接口中如果声明了一个或多个泛型变量,则为泛型类、接口

  • 泛型不是协变的,是不变的。list<object>arraylist<object>存在父子关系,而list<integer>list<object>不存在父子关系。如果想存在父子关系,则需要加上限定符extends

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SolemnJudgment

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值