1 抽象类
-
抽象类的概述:我们把一个不是具体的功能称为抽象的功能,而一个类如果有具体抽象 的功能,该类必须为抽象类。
-
抽象类的特点:
(1) 抽象类和抽象的方法必须用abstract关键字修饰(2) 抽象类中不一定有抽象方法,但是有抽象方法的类必须修饰为抽象类
(3)抽象不能实例化,因为他不是具体的,抽象类有构造方法,这里的构 造方法主要用于子类来访问父类数据的初始化
(4) 抽象的子类
a: 如果不想重写抽象方法,该子类是一个抽象类
b:重写所用 的抽象方法,这个时候子类是一个具体的类
抽象类的实例化其实是靠具体的子类来实现的。
- 抽象类的成员特点:
(1). 成员变量:既可以是变量,也可以是常量。
(2). 构造方法:有(用于子类访问父类数据的出初始化)
(3). 成员方法:既可以是抽象的,也可以是非抽象的
抽象类的成员方法特性:
(1)抽象方法 强制要求子类做的事情。
(2) 非抽象方法 子类继承的事情,提高代码复用性。
一个类如果没有抽象方法,可不可以被定义为抽象类?(可以,不让创建对象)
abstract不能和哪些关键字共存?
(private,final,static)
2 接口
- 接口的概述: 在java编程语言中是一个抽象类型,是抽象方法的集合,接口通常用interface来声明。
- 接口的特点:
(1)接口用关键字interface表示
格式:interface 接口名{}
(2) 类实现接口用implements表示
格式:class 类名 implements 接口名{}
(3) 接口不能实例化
按照多态的方法,由具体的子类实例化。其实这也是多态的一种,接口多态。
(4) 接口的子类:要么是抽象类,要不重写接口中的所有抽象方法。 - 接口成员的特点
(1)成员变量,只能是常量,默认修饰符号public static final
(2)构造方法,没有,因为接口主要是扩展功能的,而没有具体存在
(3) 成员方法.只能是抽象方法,默认修饰符是public abstract
3 抽象类和接口的区别
-
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口不行
-
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
-
接口中不能含有静态代码块以及静态方法(用static修饰方法),而抽象类是可以有静态代码块和静态方法。
-
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
-
设计理念的区别:
抽象类 被继承体现的是:"is a"的关系,抽象类中定义的是该继承体系的共性功能。
接口 被实现体现的是:"like a "的关系。接口中定义的是该继承体系的扩展功能。
类和类:继承关系,只能是单继承,可以是多层继承。
类和接口:
实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时实现多个接口。
接口和接口:
继承关系,可以单继承,也可以多继承。