0026 Java学习笔记-面向对象-抽象类、接口
2016-11-21 10:45
288 查看
抽象方法与抽象类
抽象方法用abstract修饰,没有方法体部分,连花括号都不能有;抽象方法和抽象类都用abstract修饰
包含抽象方法的类一定是抽象类;但不包含抽象方法的类也可以是抽象类
不能创建抽象类的实例,抽象类里可以有构造方法,但只是用来给子类调用的
抽象类可以包含类的5大要素:成员变量、抽象方法或非抽象方法、构造器、初始化块、内部类(接口、枚举)
抽象方法的来源:
自己定义了一个抽象方法
继承了一个抽象父类,却没有全部实现其抽象方法
实现了一个接口,但没有全部实现其抽象方法
注意区别抽象方法与空方法体:
抽象方法:没有方法体,连花括号都没有;得用abstract修饰
空方法体:有方法体,只是为空;不能用abstract修饰
二者就像"无"和"0"的区别
抽象类只能被继承,其抽象方法,子类要么全部重写成非抽象方法,从而具有创建实例的资格,要么还是做个抽象类
abstract与final不能同时修饰一个类或者方法:前者必须被继承或重写,后者不能继承或重写
abstract与static不能同时修饰一个方法:前者修饰的方法没有方法体,后者得具有方法体。
abstract与static虽然不能同时修饰方法,但可以同时修饰内部类
abstract与private:抽象方法必须被重写,然而private方法没法被重写,二者也不能同时存在
抽象类中可以有static方法,并且可以通过类名调用
抽象类有嘛用---模板模式
抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上大致保留抽象类的行为方式父类的一个非抽象方法可能依赖于一个抽象方法,而这个抽象方法得在子类中才能具体实现
模板模式规则:
抽象父类可以只定义自己能实现的一些方法,不能实现的可以抽象成抽象方法,交给子类去实现
抽象父类中的一个方法可能需要调用其他方法,这些被调方法,可以被父类实现,也可以由子类实现,依赖子类的辅助
接口是啥
类用class关键字定义;接口用interface关键字定义接口是对类的高度抽象,包含抽象方法和默认方法,定义了实现这个接口的所有类的共同具有的行为
如何定义接口
类用class定义,接口用interface定义;前者的修饰符省略或者public,接口也一样接口的命名规则与类相同
接口可以有多个直接父接口,不能继承类
接口的内部要素:
常量:默认public static final修饰;只能在声明时赋初始值
内部类(接口、枚举):默认public static
抽象方法:默认public abstract;不能有方法体
类方法:1.8开始支持;默认public;必须包含方法体,static修饰类方法;通过接口名调用
默认方法:1.8开始支持;默认public;必须包含方法体,default修饰默认方法;无static,只能通过实现类的实例调用
不包含:构造器、初始化块
接口继承
类:继承extends一个直接父类;实现implements多个直接父接口接口:继承extends多个直接父接口
使用接口
接口的用途:定义变量:接口可以用于定义一个引用类型变量,指向一个实现类的对象,可以用于强制类型转换
调用接口中定义的常量、类方法
被实现类实现
实现一个接口:
类实现接口用implements关键字,多个接口间用逗号隔开
同时继承父类、实现接口时,实现接口部分要放到继承部分的后面
实现接口后,要全部重写抽象方法,否则就是个抽象类
因为接口的成员都是public的,因此实现类重写的方法都是public
所有接口类型的引用变量都可以直接赋给Object类型的引用变量
相关文章推荐
- Java学习笔记(六):面向对象、接口和抽象类
- 黑马程序员_JAVA笔记07——面向对象3(继承、final、抽象类、接口)
- NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】
- 学习笔记 Java_ch03_多态_抽象类_最终类_ch04_接口 2014.7.26
- Java学习笔记之接口和抽象类的区别,及选择问题,看完之后就懂了。
- JAVA学习笔记(六)抽象类与接口
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口
- 黑马程序员--Java基础学习笔记【抽象类、接口】
- Java学习笔记---抽象类和接口
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- Java之学习笔记(22)------------抽象类和接口
- java学习笔记(五)----super用法,final用法,抽象类,接口
- 黑马程序员---java学习笔记之面向对象:接口
- java 学习笔记5-抽象类、接口
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- Bravo!Java学习笔记(1)---接口、抽象类、对象克隆、内部类
- 1)Java学习笔记:接口和抽象类的异同
- Java面向对象学习笔记 -- 5(抽象类、接口)