抽象类
1.抽象类
包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必领定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用
2.抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现
3.五个重要的特点
1.有抽象方法的类只能定义成抽象类
2.抽象类不能实例化,即不能用new来实例化抽象类。
3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用
4.抽象类只能用来被继承
5.抽象方法必须被子类实现
接口类
1.定义
1.接口就是规范,定义的是一组规则,可以更加规范对子类的约束
2.接口和实现类不是父子关系,而是实现规则的关系
2.接口的6个要点
1.子类通过implements来实现接口中的规范
2.接口不能创建实例,但是可用于声明引用变量类型
3.一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的
4.接口可以多继承
5.JDK1.8(不含8)之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法
6.JDK1.8(含8)后,接口中包含普通的静态方法、默认方法
3.JDK1.8新特性
1.默认方法:默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供默认方法的实现,所有这个接口的实现类都会通过继承得到这个方法
2.静态方法:JAVA8以后,我们也可以在接口中直接定义静态方法的实现。这个静态方法直接从属于接口(接口也是类,一种特殊的类),可以通过接口名调用
内部类
1.要点
1.内部类是一类特殊的类,指的是定义在一个类的内部的类
2.内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰
3.本质:内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类
2.作用
1.内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问
2.内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性
3.接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整
3.分类
1.非静态内部类
1.非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象
2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员
3.非静态内部类不能有静态方法、静态属性和静态初始化块
4.外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例
2.静态内部类
1.静态内部类看做外部类的一个静态成员
2.当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此静态内部类的实例方法不能直接访问外部类的实例方法
3.匿名内部类
1.适合那种只需要使用一次的类。比如:键盘监听操作等等
2.匿名内部类没有访问修饰符
3.匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢
4.局部内部类
1.定义在方法内部的,作用域只限于本方法,称为局部内部类
2.作用域仅限于所在方法。
标签:部类,JAVA,内部,静态,方法,接口,抽象类,接口类 From: https://blog.csdn.net/m0_63025333/article/details/139888078