假期学习10
第10天:抽象类与接口
对应章节:第5章
(1)今天做了什么: 抽象类用abstract修饰,不可实例化,可含抽象方法(无方法体)和普通方法,为子类提供模板。接口用interface定义——Java 8引入default方法(有默认实现)和static方法,解决接口演进问题。接口变量默认public static final,方法默认public abstract。一个类可实现多个接口(弥补单继承限制)。总结两者的选择标准:is-a关系+共享代码用抽象类;为无关类赋予共同行为用接口。练习:设计USB接口定义插拔规范,Mouse、Keyboard、Printer实现它;用抽象类和接口各设计一次对比差异。
(2)明天准备做什么: 学习第5章末和第6章——四种内部类(非静态内部类、静态内部类、局部内部类、匿名内部类)及枚举(enum)的定义和使用。练习用匿名内部类实现事件监听,设计交通灯枚举。
(3)遇到的问题: 接口中的变量默认是public static final,试图修改时编译报错。一个类同时继承抽象类和实现接口时,如果它们有同名default方法会导致冲突,编译器要求子类必须覆盖该方法解决歧义。抽象类构造器虽然不能直接new,但它会在子类实例化时被调用——所以抽象类可以有构造器。接口没写public修饰符时方法是包访问级别还是public?查阅后确认接口方法默认public。
浙公网安备 33010602011771号