Java抽象类、接口、内部类、枚举类

 Java抽象类、接口、内部类(静态内部类,非静态内部类、匿名内部类)、枚举类 知识点总结

一.抽象类

  类的基本特征也就是属性 、构造器、方法\这里从这三个方面介绍抽象类

1.关键字:abstract  

2.基本要点:

普通类里面有的东西抽象类里面都有,也就是属性是跟普通类没有差别的。方法也可以写普通方法

抽象类构造器需要深度将一下:普通类的继承是不会继承父类构造器的,如果父类的构造器是无参构造器那么子类也是一个无参构造器。也就是继成之后自动生成的super();   如果父类的构造器不是默认的空构造器,就需要在子类的构造器中使用super(String a,String b);调用父类构造器中有的参数,然后可以在初始化自己的子类参数,this.c = c;   

这里的抽象类也是一样的,abstract类继承,只继承到属性跟方法。构造器自己写自己的然后使用super(......);调用父类的具体初始化实现

抽象类的抽象方法:public abstract void 名字();  是不需要方法体的,知识体现了一个通用的行为特征,整个行为特征是无法分辨的,比如动物抽象类中的一个叫声的方法,是不知道是那种具体动物叫的没法试下具体的方法体。所以继承抽象类后需要实现里面的所有抽象方法。抽象类也是用来被继承的!

3.抽象类知识点:

  抽象类不能实例化,也就是不能new,so也就是构造器不可以创建对象,没有构造器(普及一下,普通类的     new其实就是使用构造器来创建实例(对象)的)。也所以抽象类必须要被普通子类来实现。   

  抽象类里面不一定有抽象方法,但是有抽象方法的类一定是抽象类。  

  抽象类体现的是一种模板类,是未完成的类设计。

4.总结一下:抽象类就比普通类多了个抽象方法,其他的普通类有的抽象类也都有.都一样

二:接口(接口也是抽象的一种体现形式)

1.关键字:interface

2.基本要点:

这里也是从 属性 构造器 方法来说

属性:相比抽象类来说有点不一样,接口中的属性默认都是常量,默认使用public static final来修饰,想想也是,人家提供接口就得给你定死,不能再修改了。

构造器:没有。  有属性。  也体现出接口是不能new实例的,跟抽象类是一样的,所以说接口也是抽象类的一种体现形式。

有参数无法构造。

方法:默认是抽象的,public abstract void test();  也可以写成 void test();  用来被实现接口的类重新实现。p

3.接口知识点

首先接口之间可以进行多继承,类实现接口可以多实现。

接口是一套行为规范,约束了怎样去做。具体的做法可能不同,但是结果都是一样的。

Interface test = new Test();//接口变量指向其实现类的实例

接口体现了规范与实现相分离原则。充分利用接口可以利于代码的扩充维护

接口也是用来继承的,位于继承链 的顶端。

实现接口就必须实现接口里的所有抽象方法,除非你本身就是一个抽象方法。

4.补充:

接口的多态: 接口变量指向其实现类的实例

抽象类的多态:父类引用指向子类实例

三:内部类

    用的不多,能看懂就行

内部类可以理解为是像构造器那样,是类的一个成员。他提供了一个更好的封装,但是使原来的东西更复杂,所以出现频率不是很高、

1.非静态内部类

         主要是看如何调用的,个人总结如下:

         外部类.内部类   内部类实例(可用)  = 外部类实例.内部类实例(new 类名)

知识点:

              不可以定义静态成员,加载问题。

              可以定义非静态成员


2.静态内部类

知识点:

             静态内部类static修饰

             可以定义静态成员

             可以定义非静态成员

3.匿名内部类

  (1)抽象匿名内部类

       抽象匿名内部类 new表示创建了一个匿名内部类的实例,这个类继承抽象类AbstractDemo

       new abstract()创建了一个实例,实现了抽象类的匿名内部类的实现

  (2)接口匿名内部类

有一点需要注意:匿名类最后结尾加分号

 new创建了一个匿名内部类的实例,这个匿名内部类实现了接口

接口变量指向其实现类的实例,当调用方法时,执行的是其实现方法的方法

四:枚举类

定义:方法 属性 构造器 与普通类的定义是一样的。


枚举类 基本知识点:

   关键字: enum 

   枚举类中不需要new创建实例,在创建类的时候实例就已经创建好了。

   枚举类的构造器只能使用private修饰,限制了实例不可以在外部创建,直接是用实例!比如上面代码中的DOG PIG

 属性一般(推荐)定义成private final,一定是private的。只需要提供get方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容