6.13课堂笔记之内部类&抽象类和接口的异同点

适配器:把多种不同的需求或请求代码,转换成统一的代码处理,便于维护
降低层和层之间的耦合性


抽象类和接口的相同点和不同点

相同点:

(1)抽象类、接口都不能创建对象

(2)抽象类、接口都有抽象方法

不同点:

(1)语法:抽象类abstract class ; 接口 interface;

(2)接口的属性static、final、public,接口属性显式赋值;
抽象类没规定;

(3)接口的所有方法public abstract;
抽象类没这个规定;

(4)接口无构造方法 ;抽象类一定要有;

(5)抽象类如果作为父类,则子类只能继承这一个抽象类,子类一定要重写抽象类的抽象方法,这种重写叫覆盖。调用构造方法,用抽象类的引用型变量指向继承抽象类的对象叫上转型。

一个子接口可以继承多个父接口,一个类和另一个接口之间的关系,用实现implements。一个类实现接口,并对所有方法的重写叫实现。用接口的引用型变量指向实现接口的类的对象叫接口的回调。

(6)语义:

抽象类:多态

接口:接口的回调

一个类继承了抽象类,说明有继承关系

(7)场合:

抽象类:用于多态的场合,单一继承。

接口:降低耦合性,多继承。

继承一个父类,实现多个接口。


内部类:

线程、匿名使用

内部类对象将自动拥有包含内部类对象的外部类对象的引用,此属性为外部类名.this

内部类的作用范围

在外部类的外部创建一个外部类的内部类的对象

先创建外部类对象,再通过外部类创建内部类对象(实例内部类)

外部类的方法(实例方法)创建内部类的对象,内部类的对象的类在外部类可以被识别

内部类可以定义成私有,不能在外部类的外部创建私有内部类,只能在外部类的方法(实例方法)创建私有内部类的对象。


一个类定义在另一个类的内部。这个类和另一个类是组成关系。

只在包含他的外部类有效

实例内部类(通过外部类对象来创建内部类对象,也就是自动拥有外部类对象的引用)

Outer1 a1=new Outer1();
Outer1.Inner oi=a1.new Inner();

只有通过创建对象才能创建实例内部类的对象

a1.new Inner( );创建内部类对象

内部类有一个属性,自动拥有外部类对象的引用。名字叫
Out1.this,类型是outer1.Inner

外部类外部创建内部类对象,自动拥有外部类对象的引用。

outer1.Inner i=new Inner();

外部类中的方法创建内部类,Inner i=new Inner();

内部类私有,只能通过外部类的方法创建。


方法内部类

一个类定义在另一个类的方法里面,包含该内部类的方法的属性要是final类型

只能在方法里创建对象

只能在方法里使用对象

可以使用包含该内部类方法里面的final类型的局部变量

方法内部类自动拥有外部类对象的引用

内部类不是静态的,内部类的属性也不能是静态的,静态内部类不能访问外部类的非静态属性,非静态内部类属性不能定义成静态的。

静态方法,不传this

阅读更多

没有更多推荐了,返回首页