抽象类
使用场景
-
抽象类:说不清楚,道不明白的类就是抽象类
-
抽象方法:说不清楚,道不明白的方法就是抽象方法
-
设定抽象出来的框架,可以给子类继承西区,编写具体方法内容
abstract关键字
-
abstract : 抽象的
-
被abstract修饰的方法就做抽象方法:
a. 没有方法体
b. 必须存在于抽象类中
c. 在抽象类中可以没有抽象方法
-
被abstract修饰的类叫做抽象类
语法
-
抽象类名: public abstract class 类名{ }
-
抽象方法: abstract 返回值类型 方法名( ); //不存在方法体
-
可以有默认的方法实现
-
除了你不能实例化抽象类之外,它和普通Java类没有任何区别
注意
-
抽象类不能被实例化|创建对象
-
抽象类如果要使用必须要被继承,抽象方法必须被重写
-
抽象方法必须要定义在抽象类中
-
抽象类中可以有具体的方法,可以有抽象方法
-
抽象类的使用:
a. 抽象子类:按需重写抽象方法+按需新增方法–>不能实例化
b. 具体子类:必须重写所有的抽象方法+按需新增–>可以实例化
-
抽象方法一旦被重写过,后续的子类可以不再重写了
-
abstract关键字不能和private,final,static和native一起使用
-
抽象方法可以有public、protected和default这些修饰符
构造器
可以有构造器,并且让子类继承和创建对象
接口
接口介绍
-
接口是特殊的抽象类,和java类是完全不同的类型
-
定义接口使用interface关键字,不再是class 例;public interface 类名{ }
-
在jdk1.7之前只能存在成员方法(公共的抽象)和静态变量(公共的 最终的
静态变量)
成员方法的定义
-
public abstract 返回值类型 | void 方法名();
-
修饰符public abstract默认的,可以选择性的省略
变量定义
-
public static final 数据类型 变量名=变量值;
-
public static final的修饰符可以被省略,但是默认存在
注意
-
接口不能实例化
-
抽象的方法必须被重写
-
接口可以可有继承多个接口,但是接口不可以实现接口
-
类可以实现接口,但是类不可以继承接口
使用implements关键字实现接口,实现可继承的作用一样 -
类只能单继承,但是接口可以多实现
-
类要同时实现接口和继承类,先继承后实现 例; 先 extends 父类 implements
接口1,接口2,接口3 -
实现接口要重写接口中的所有的抽象方法
-
接口的实现类;
a. 抽象实现类
b. 具体的实现类
-
接口中不可以存在构造器,但是抽象类中可以存在
接口的作用
-
多实现,使用方便
-
定义规范,规范程序员的开发规范
-
降低耦合度:高内聚低耦合
接口和抽象类之间如何选择
-
一般都使用接口
-
如果需要有具体的方法的实现,可以选择抽闲类,因为抽闲类中可以存在抽闲方法和具体方法
-
如果想要创建父类的对象使用,那就使用普通父类
JDK1.8后新加入的两种可以存在的方法,静态方法和默认方法
-
静态方法:可以通过接口名字.方法名()使用
-
默认方法:被default在接口中的修饰的方法为默认方法,可以存在方法体,只能通过子类的对象使用