Java的抽象类、接口、内部类

257 阅读4分钟
mp.weixin.qq.com/s/gIqlS3pFx…

抽象方法基本概念:

-抽象方法主要指不能具体实现的方法,体现为没有方法体并且使用abstract关键字修饰;

语法格式:

-访问控制符 abstract 返回值类型 方法名(形参列表);

-如:public abstract void cry();

抽象类的概念:
-抽象类主要指不能具体实例化的类,也就是不能构造对象并使用abstract关键字修饰;
注意事项:
(1)抽象类中可以有成员变量、构造方法、成员方法。
(2)抽象类中可以没有抽象方法,也可以有抽象方法。
(3)拥有抽象方法的类必须是抽象类,因此严格来说具有抽象方法并且使用abstract关键字修饰的类才算真正意义上的抽象类。

实际意义:

-抽象类的实际意义不在于自身创建对象而在于被继承,当一个类继承抽象类后则必须重写抽象方法,否则该类也变成抽象类。
抽象类对子类具有强制性和规范性,因此叫做模板设计模式
经验分享:
-在以后的开发中推荐使用多态的语法格式,此时父类引用直接调用的所有方法一定是父类中拥有的方法,若希望更换子类时只需要将new关键字后面的类型修改而其它位置不变就立刻生效,因此提高了代码的可维护性以及可扩展性。
该方式的缺点:父类引用若希望调用子类独有的方法,则需要进行强制类型转换。


2

接口基本概念:

-接口本质上就是一种比抽象类还抽象的类,体现在所有方法都是抽象方法。
-定义类的关键字是class,而定义接口的关键字是interface。
类和接口之间的关系:

抽象类和接口之间的区别:
(1)定义抽象类的关键字是class,而定义接口的关键字是interface;
(2)继承抽象类的关键字是extends,而实现接口的关键字是implements;
(3)抽象类中可以有构造方法,而接口没有;
(4)继承抽象类支持单继承,而实现接口支持多实现;
(5)抽象类中可以有成员变量,而接口中只能有常量;
(6)抽象类中可以有成员方法,而接口中只能有抽象方法;
(7)抽象类中增加方法可以不影响子类,而接口中增加方法通常影响子类;
(8)从jdk1.8开始增加特性允许接口中有非抽象的方法,但需要使用default关键字修饰;


3

内部类基本概念:

-当一个类的定义放在另外一个类的类体内部时,那么这个类就叫做内部类,而内部类所在的类叫做外部类。
-类体中的内容:成员变量、成员方法、构造方法、静态成员、构造块和静态代码块、内部类.
语法格式:

基本作用:
-当一个类存在的价值仅仅是为某一个类单独服务时,就可以将这个类定义为所服务类的内部类,此时内部类可以直接访问外部.类的私有成员而不再需要提供公有的get和set方法。
基本分类:
普通内部类 - 直接将一个类的定义放到另外一个类的类体中。
静态内部类 - 使用static关键字修饰的内部类。
------------ 只有内部类才可以使用static关键字修饰。
局部内部类 - 直接将一个类的定义放到方法体的内部。
------------- 只在方法体内有效。
匿名内部类 - 主要指没有名字的内部类。


4

匿名内部类:

语法格式:

-接口/父类类型 引用变量名 = new 接口/父类类型(){ 方法的重写 };
经验分享:
当接口类型的引用作为方法的形参时,实参的传递方式有两种:
a.自定义类实现接口并创建该类的对象作为实参传递;
b.使用匿名内部类的语法格式得到接口的引用作为实参传递;