面向对象 -- 抽象类与接口(B版)

课程笔记Day10

  • 抽象
  • 接口
  • 比较器

第一章 抽象

第01节 基础理论

抽象的由来

在我们编写代码,采用继承关系的时候。继承是【向上抽取共性】的过程。
例如:
	猫
		成员变量: name age
		成员方法: 撸猫、吃
	狗
		成员变量:name age
		成员方法:遛狗、吃
我们向上抽取共性,形成父类 动物 对于成员方法而言,都应该具备有 吃的功能。
但是站在动物的角度来说,动物吃什么? 我们不清楚

生活实例:
在这里插入图片描述

说明:

站在父类的角度考虑问题,父类当中一定是存在这个功能的,但是这个功能说不清楚具体的实现方式。

这种情况下,这个功能就是抽象的。(例如上述案例当中的 形状的面积 和 动物的吃)

第02节 快速入门

效果图
在这里插入图片描述

案例代码

动物类

//动物类【抽象类】
public abstract class Animal {
   

    //动物睡觉的方式是一样的
    public void sleep(){
   
        System.out.println("动物睡觉..");
    }

    //动物吃的方式是不一样的
    //抽象方法所在的类,必须是抽象类
    public abstract void eat();
}

猫类

//猫类【子类】  Alt + Enter
public class Cat extends Animal{
   

    @Override
    public void eat() {
   
        System.out.println("猫吃鱼");
    }
}

测试类

//测试类
public class Test {
   

    public static void main(String[] args) {
   

        //创建对象
        //这里出错,抽象类不能创建对象(不能实例化)
        //Animal aa = new Animal();

        //创建对象
        Cat c = new Cat();
        //调用方法
        c.eat();   //猫吃鱼
        c.sleep(); //动物睡觉..
    }
}
第03节 注意事项

抽象类 和 抽象方法 需要注意哪些问题

1. 两者关系
	抽象方法所在的类,必须是抽象类。
	抽象类当中,不一定有抽象方法,还可以有其他方法。

2. 对象和构造
	抽象类不能创建对象,也就是不能被实例化。
	抽象类有构造方法,给成员变量初始化数据。

3. 使用方式
	如果一个类,继承了抽象类,那么他有两个选择。
	选择一:把自己变成抽象类
	选择二:重写父类当中,所有的抽象方法

4. abstract 和 final 不能共存。为什么呢?
	A.抽象类是要求被继承的,有子类的。 而final修饰的类,是不能被继承。
	B.抽象方法是要求被重写的,而 final 修饰的方法,是不能被重写的。

演示:抽象类当中,包含有构造方法。不包含抽象方法的情况
在这里插入图片描述

第04节 模板方法

基础理论

设计模式:共计有 23种。
他是程序员经过多年长期的积累,累计出来的 23种 编写代码的方式。设计代码的方式。

生活实例

《司机的故事》

司机分为两种:新手司机和老司机。开车的方式很像。

新手司机:
	1. 系上安全带,点火,启动
	2. 双手紧握方向盘,刹车当油门,猛地轰
	3. 熄火,停车

老司机:
	1. 系上安全带,点火,启动
	2. 三挡起步,一只手握方向盘,一只手抠脚
	3. 熄火,停车

小结操作步骤

1. 将共性的内容,写在父类当中,定义成为 final 修饰的方法。
2. 将不同的内容,定义在父类,作为抽象方法,交给各自的子类去实现。
3. 在父类的 final 方法当中去调用父类的抽象方法。

案例代码

司机类

//司机类【抽象类】
public abstract class Driver {
   

    //存在开车的方法
    public final void byCar(){
   
        System.out.println("1.系上安全带,点火,启动");
        useCar();
        System.out.println("3.熄火,停车");
    }

    //定义一个方法,表示不同的操作
    public abstract void useCar()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值