一、抽象类:
如果一个方法没有具体的体系,没有逻辑功能,方法不应该出现方法体{}
没有方法体的方法,抽象方法,使用关键字 修饰这个方法 abstract
使用abstract 关键字修饰的类 就是抽象类
包含抽象方法的类一定是抽象类
抽象类不能实例化对象,不允许new
抽象类的特点:
抽象方法与抽象类 必须要使用abstract来修饰
抽象类不可以创建对象
抽象方法的格式:
修饰符abstract数据类型 方法名(参数列表);
抽象类中包含的成员问题:
抽象类中,可以定义非抽象方法,普通方法
抽象类中,能不能写静态的普通方法,直接类名调用,子类类名也可以调用
抽象类中,也有构造方法,用法以及定义方式和普通类完全一样
关于修饰符 abstract 不能和哪些修饰符并存
private : 原因 抽象方法让子类重写,如果私有修饰,子类不知道父类有这个方法,不能重写
final :原因 抽象方法让子类重写,加final方法不能被重写
static :原因 静态方法可以直接类名调用,但是抽象方法没有主体,调用他没有意义
二、接口
一个特殊的抽象类(但不是类,因为不会继承Object)
定义接口:interface
实现接口:implements
接口的思想特点:
提高了程序的扩展性
降低了程序的耦合性
接口的特点
成员特点:
构造函数:没有
成员方法:只有成员方法
成员变量:只有final修饰的常量,final修饰的常量在常量池中
继承一个类的同时,可以实现多个接口
类与类的关系
类与类之间的关系:
继承关系,单继承,多层继承
类与接口之间的关系
实现关系,但实现也可以多实现
接口与接口之间的关系
继承关系,单继承或多继承
接口和抽象类的使用:
抽象类:所有的子类都必须要完成的操作,使用抽象类
例:吃饭、睡觉
接口:部分子类必须要完成的操作,接口
例:说英语,买车,
三、内部类
在一个类中,定义了一个类
访问特点:
内部类可以访问外部类的成员,包含私有成员
外部类想要访问内部类的成员,必须要创建内部类对象,才可以访问
内部类分为:
成员位置:成员内部类
局部位置:局部内部类
局部内部类:
1、局部内部类可以直接访问外部类的成员
2、局部内部类,如果要访问外部类的局部变量,这个局部变量要接final,为了延长局部变量的生命周期
成员内部类:
访问内部类的三种格式
1、内部类是非静态的
内部类的方法非静态
外部类名.内部类名 变量=new 外部类对象().new 内部类对象();
2、内部类是静态的
内部类的方法是静态的
外部类名.内部类名.内部类方法();
3、内部类是静态的
内部类的方法是非静态的
外部类名.内部类名 变量=new 外部类.内部类();
匿名内部类:
没有名字的内部类
其实,匿名内部类就是一个继承外部类或者 实现接口的子类的对象
格式:
new 外部类名或者接口名(){
重写抽象方法
也可以定义特有方法
}
|
|