1、final关键字
*可以修饰类,方法,变量
*final修饰的类不可以被继承
*final修饰的方法不可以被覆盖
*final修饰的变量是一个常量,只能被赋值一次
*内部类只能访问被final修饰的局部变量
2、抽象类
抽象类的特点
*方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰
抽象方法必须定义在抽象类中,该类必须被abstract修饰
*抽象类不可以被实例化,为什么?因为调用抽象方法没有意义
*抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化
否则,这个类还是抽象类
抽象类又构造函数吗?有,用于给子类对象进行初始化。
抽象类中可以不定义抽象方法?可以的,但是很少见,目的就是不让该类创建对象。AWT的适配器对象就这种类
通常这个类中的方法有方法体,但是却没有内容。
abstract class Demo {
void show(){}
}
抽象关键字不可以和哪些关键字共存?
private 不行,私有的子类没有办法覆盖,
static不可以
final不行(final方法不能覆盖)
抽象类和一般类的异同点?
相同点:都是用来描述事物的,都在内部定了成员
不同:抽象类描述事物的信息可能不足,一般类中不能定义抽象方法,抽象类中可以定义抽象方法。一般类可以实例化,抽象类不可以实例化
抽象类一定是个父类?是的,因为需要子类覆盖其方法后才可以对子类实例化。
3、接口
格式interface{}
接口中的常见成员:而且这些成员都有固定的修饰符
全局常量和抽象方法
接口的特点
*接口是对外的暴露的规则
*接口是程序的功能扩展
*接口的出现降低耦合性
*接口可以用来多实现
*接口与接口之间可以有继承关系
抽象类和接口特点
相同点:都是不断向上抽取而来
不同点:
*抽象类需要被继承,而且只能单继承,接口需要被实现,可以多实现
*抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法
接口中只能定义抽象方法,必须由子类来实现
*抽象类的继承是Is a关系,接口的实现是like a关系