Java13天进阶教程【第2天】

第2天

1.抽象类

目标:抽象类的入门概述。

引入

​ 父类知道子类一定要完成某个功能,但是每个子类实现的情况都不一样

​ 而且子类都会用自己的功能了,父类的该功能就可以定义成抽象的方法。

​ 拥有抽象方法的类必须定义成抽象类。

什么是抽象方法?

​ 没有方法体,只有方法签名,必须用abstract修饰的方法就是抽象方法。

什么是抽象类?

​ 拥有抽象方法的类必须定义成抽象类。

​ 抽象类必须用abstract关键字修饰。

小结

​ 抽象类本身还是一个类,拥有类的五大成分,只不过是还可以有抽象方法。但正因为有抽象方法,所以无法创建对象。

​ 抽象方法:没有方法体,只有方法签名,必须用abstract修饰的方法就是抽象方法。

​ 抽象类:拥有抽象方法的类必须定义成抽象类,必须用abstract修饰。

public class AbstractDemo {
   
    public static void main(String[] args) {
   
        Wolf wolf = new Wolf();
        wolf.eat();
    }
}
class Wolf extends Animal{
   
    @Override
    public void eat() {
   
        System.out.println("狼吃肉");
    }
}
// 抽象类:拥有了抽象方法的类必须定义成抽象类。抽象类必须加上abstract修饰。
abstract class Animal{
   
    // 抽象方法:没有方法体,只有方法签名,必须加上abstract修饰。
    public abstract void eat();
}

目标:抽象类的使用。

抽象类是为了被继承。

总结

​ 一个类继承了抽象类,必须重写完抽象类的全部抽象方法,否则这个类必须定义成抽象类。

​ 因为拥有抽象方法的类必须定义成抽象类。

abstract class Wolf extends Animal{
   
    @Override
    public void eat() {
   
        System.out.println("狼吃肉");
    }
}
abstract class Animal{
   
    public abstract void eat();
    public abstract void run();
}

目标:抽象类的特征研究和深入。

抽象类的特征:有得有失。

​ 有得:抽象类拥有了得到抽象方法的能力。

​ 失去:抽象类失去了创建对象的能力。

面试题:抽象类是否有构造器,是否可以创建对象,为什么?

​ 答:抽象类作为类一定有构造器,而且必须有构造器。

​ 提供给子类继承后调用父类构造器使用的。

​ 抽象类虽然有构造器,但是抽象类绝对不能创建对象。

​ 抽象类中可能存在抽象方法,抽象方法不能执行。

​ 抽象在学术上本身意味着不能实例化。

抽象类除了有得有失之外,类的其他成分人家都具备!!

小结

​ 抽象类不能创建对象。

​ 抽象类除了不能创建对象之外,类的其他成分它都具备!

​ 抽象类中也可以没有抽象方法!!

抽象类存在的意义有两点

(1)被继承,抽象类就是为了被子类继承,否则抽象类将毫无意义。(核心意义)

(2)抽象类体现的是"模板思想":部分实现,部分抽象。(拓展)

​ – 可以使用抽象类设计一个模板模式。

目标:抽象类的注意事项和总结

1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。
2. 抽象类一定有而且是必须有构造器,是供子类创建对象时,初始化父类成员使用的。子类的构造器中,有默认的super(),需要访问父类构造器。
3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类。
5. 抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。抽象类中已经实现的是模板中确定的成员,抽象类不确定如何实现的定义成抽象方法,交给具体的子类去实现。

2.接口

目标:接口的概述和定义等。(以理解和记住语法为主)

什么是接口?

​ 接口是更加彻底的抽象,接口中全部是抽象方法和常量,没有其他成分。(JDK 1.8之前)

接口有啥用?

​ 接口体现的是规范思想,实现接口的类必须重写完接口中全部的抽象方法。

​ 规范 == 约束。

​ 接口称为被实现,实现接口的类称为实现类。

定义接口的格式

​ 修饰符 interface 接口名称{

​ }
​ interface:定义接口的关键字。

接口中的成分研究(JDK 1.8之前)

​ 1.抽象方法

​ a.接口中的抽象方法默认会加上public abstract修饰,所以可以省略不写。

​ 2.常量

​ 常量:是指有public static final修饰的成员变量,有且仅能被赋值一次,值不能改变。

​ 常量的名称规范上要求全部大写,多个单词下划线连接。

​ 常量修饰的public static final 可以省略不写,默认会加上。

小结

​ 定义接口使用的关键字:interface

​ 接口中的成分在JDK 1.8之前只能有:常量和抽象方法。

​ 在接口中常量的修饰符:public static final 可以省略不写,默认会加上。

​ 在接口中抽象方法的修饰符:public abstract 可以省略不写,默认会加上。

public interface InterfaceDemo {
   
     // 2.常量
     // 只有一份,在执行的过程中其值必须有,但是不能改变!
     // 常量是public static final修饰
     // 常量的名称建议字母全部大写,多个单词用“_”连接
     // 在接口中常量可以省略public static final不写,默认会加上该三个修饰符!
     //public static final String SCHOOL_NAME = "黑马";
     String SCHOOL_NAME = "黑马";


     // 1.抽象方法
     // public abstract void run();
     // 接口中的抽象方法默认会加上public abstract修饰,所以可以省略不写。
     void run();
     void work();
}

目标:接口的基本实现。

接口是用来被类实现的。

引入

​ 类与类是继承关系:一个类只能直接继承一个父类。

​ 类与接口是实现关系:一个类可以实现多个接口。

​ 实现接口的类称为“实现类”。

​ 子类 继承 父类

​ 实现类 实现 接口

实现类实现接口的格式&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值