抽象方法没有方法体,方法留给子类去实现(必须要求覆盖才有意义)
抽象方法不能用private(是有的不能被子类所覆盖) final(因为必须有子类 抽象方法才能被实现) static, 作为修饰符
抽象类:
不能new一个新的抽象类,只能作为父类
抽象类可以不包含抽象方法,如果该类中有抽象方法那么整个类一定是抽象类
接口:(多个抽象类的抽象就是接口)
接口表示为一种规范/约束 ,要求某一类事务必须的具备的功能,要求实现类必须
多个类共有的特征
接口不能new,接口中定义的成员变量 默认是 public static final 修饰的
接口中定义的方法都是公共的抽象方法
接口中定义的内部类都是静态内部类
接口只能继承接口 ,不能继承类,接口支持多继承
表达式:
【修饰符】inteface 接口名 extends 接口1,接口2
类实现接口的语法:
【修饰符】class 实现类名 extends 父类 implements 接口1,接口2{}
成员内部类:成员内部类的访问方式:
方式一:在外部类提供一个方法创建内部类的对象进行访问
方式二:在其它类直接创建内部类的对象 格式:外部类.内部类 变量名 = new 外部类().new 内部类()
内部类的应用场景:我们在描述一类事物的时候 发现描述的事物内部还存在一个比较复杂的事物时,而且这个比较事物还需要
访问 外部事物的属性等数据那么这个时候我们就需要内部类(一个类需要访问另一个类的很多属性的时候就需要内部类 因为内部类访问外部类比较方便)
内部类的好处:内部类可以直接访问外部类的所有成员。
注意:
1)如果外部类和内部类同时存在同名的成员变量时 默认访问的时内部类的成员变量
可以通过"外部类.this.成员变量名"指定访问外部类的成员变量
2)成员内部类一旦 出现了静态的成员该类也必须使用staic修饰。下
局部内部类:
在一个类的方法类内部定义另外一个类,那么另外一个类就称作为局部内部类
注意细节:
1)如果内部类需要访问局部变量那么这个变量必须用final修饰
匿名内部类:
没有类名的类就成为匿名内部类
使用前提:必须存在继承或者实现关系
匿名内部类适用于实参
如果内部类需要访问局部变量那么这个变量必须用final修饰