1,抽象类的特点
A:抽象类里面可以定义普通方法,属性[普通的],抽象方法
B:如果一个类里面有抽象方法,那么这个类必须定义成抽象类
C:抽象类不能被实例化,只能被继承
D:子类继承抽象类时,抽象类中的抽象方法可以实现也可以不实现,如果抽象方法没有被实现,则子类也必须标记为抽象类。
抽象方法
A:抽象类里面可以定义普通方法,属性[普通的],抽象方法
B:如果一个类里面有抽象方法,那么这个类必须定义成抽象类
C:抽象类不能被实例化,只能被继承
D:子类继承抽象类时,抽象类中的抽象方法可以实现也可以不实现,如果抽象方法没有被实现,则子类也必须标记为抽象类。
抽象方法
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
不能用abstract修饰私有方法(因为私有方法不能被其他类访问,导致抽象方法无法被实现),构造方法(当一个类继承当前类的时候,就必须实现该抽象方法,但是构造方法类名必须与类名相同,所以不能用abstract修饰构造方法),静态方法
修饰符
|
修饰对象
|
规则
|
static
|
属性
|
类或类的实例来调用,最好用类引用
|
方法
|
只能调用静态变量或静态方法,不能使用this,super
| |
代码块
|
程序一加载静态代码块就运行,而且只运行一次
| |
final
|
属性
|
常量,final int i=12;或者final
int i;i=12;
|
方法
|
该方法不能被子类重写
| |
类
|
该类不能被继承。
| |
abstract
|
方法
|
该方法只有方法声明,没有方法体
|
构造方法和static方法不能是抽象的
| ||
有该方法的类称为抽象类,类名前必须加abstract
| ||
类
|
抽象类不能被实例化
| |
抽象类可以具有指向子类对象的引用
| ||
抽象类可以有普通方法,只能子类调用
| ||
父类的抽象方法必须在子类中实现(用子类实例对象)
|
接口
接口标准
为什么使用接口--
1,接口的语法
[修饰符]+interface+接口名
{
//属性----都是公共的,静态的,常量 int a=10;====public static final int a=10;
//方法----都是抽象方法public void a();====public abstract void a();
}
2,接口的实现
interface A{
public void a();
}
interface B{
public void b();
}
class B implements A,B{
pubilc void a(){}
pubilc void b(){}
}
3,接口的特点
A:接口里面的 所有方法都是抽象方法
B:一个类只能继承一个父类,但是可以实现多个接口
C:一个类实现多个接口的同时,还可以来继承一个类。继承类的时候写法是:必须先写继承,再写实现。
D:接口不能被实例化---因为里面有抽象方法
E:一个接口可以继承多个接口,比如:public interface A extends B,C,D{...}
4,接口的用途
1)通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.
(2)通过接口指明多个类需要实现的方法
(3)通过接口了解对象的交互界面,而无需了解对象所对应的类
(4)使用接口,具体代码可以不依赖具体实现类,当具体实现类有变化时,代码不需调整。使用接口使软件更容易扩展。
十三、 抽象类和接口对比
相同点
1,不能被实例化
2,能包含抽象方法
不同点
1,抽象类中可以各种属性、普通方法、抽象方法 接口中只能常量、抽象方法
2,一个类只有继承一个抽象类,但是可以实现多个接口
接口标准
为什么使用接口--
1,接口的语法
[修饰符]+interface+接口名
{
//属性----都是公共的,静态的,常量 int a=10;====public static final int a=10;
//方法----都是抽象方法public void a();====public abstract void a();
}
2,接口的实现
interface A{
public void a();
}
interface B{
public void b();
}
class B implements A,B{
pubilc void a(){}
pubilc void b(){}
}
3,接口的特点
A:接口里面的 所有方法都是抽象方法
B:一个类只能继承一个父类,但是可以实现多个接口
C:一个类实现多个接口的同时,还可以来继承一个类。继承类的时候写法是:必须先写继承,再写实现。
D:接口不能被实例化---因为里面有抽象方法
E:一个接口可以继承多个接口,比如:public interface A extends B,C,D{...}
4,接口的用途
1)通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.
(2)通过接口指明多个类需要实现的方法
(3)通过接口了解对象的交互界面,而无需了解对象所对应的类
(4)使用接口,具体代码可以不依赖具体实现类,当具体实现类有变化时,代码不需调整。使用接口使软件更容易扩展。
十三、 抽象类和接口对比
相同点
1,不能被实例化
2,能包含抽象方法
不同点
1,抽象类中可以各种属性、普通方法、抽象方法 接口中只能常量、抽象方法
2,一个类只有继承一个抽象类,但是可以实现多个接口
用接口代替只有抽象方法的抽象类,理由如下:
接口有比抽象类更好的特性
1:可以被多继承
2:设计和实现完全分离
3:更自然的使用多态
4:更容易搭建程序框架
5:更容易更换实现
必须知道的接口特性
1:接口不可以被实例化
2:实现类必须实现接口的所有方法
3:实现类可以实现多个接口
4:接口中的变量都是静态常量
对比抽象类和接口
NO.
|
比较点
|
抽抽象类象类
|
接口接口
| |
1
|
定义
|
用abstract修饰的类。
|
静态常量和抽象方法的集合
| |
2
|
组成
|
抽象方法,普通方法,构造方法,成员变量,常量
|
抽象方法,静态常量
| |
3
|
使用
|
子类继承(extends)
|
实现类实现(implements)
| |
4
|
关系
|
抽象类可以实现接口
|
接口不能继承抽象类,接口可以用abstract修饰
| |
5
|
对象
|
都是通过对象的多态性来实现的
| ||
6
|
局限
|
不能多继承,不能实例化
|
可以多继承,不能实例化
| |
7
|
选择
|
建议选择接口,避免单继承。
| ||
8
|
实际
|
模板
|
标准
|