一个类可以实现多个接口。必须实现接口中定义的抽象方法。
默认接口只能本包内被实现。接口中变量全为public static final;接口中方法全为abstract,自动public。
继承原则:访问范围只能放大不能缩小。故接口中的方法的实现必须被声明为public。
类实现接口,子接口继承父接口。接口抽象出的方法,给不同的类无限的发挥空间。
子类继承父类,为了扩展功能或重写相应方法;子接口继承父接口,同样如此。
常量组值放在接口中定义,在类中实现该接口。类可直接使用接口中定义的常量。
接口作用:实现多态;创建常量组。
抽象类与接口的比较:
区别:
一个类实现多接口,但只能继承一个抽象类;
抽象类可有飞抽象方法,接口中全为抽象方法;
抽象类中方法可有public , private, protected ,接口中的方法全为public。
抽象类可有构造函数,接口不能。
接口可以声明接口类型的变量,其值必须是实现了该接口的类的对象。
联系:
接口定义了类的框架,实际上是一种完全的抽象类。
不能实例化。
通过它们存放子类对象或是实现类的对象。即:实现多态。内部类:
静态内部类,非静态内部类。
静态内部类不可访问外部类的非静态变量/方法。
宿主类通过 [类名.变量名] 访问静态内部类的静态变量,通过非静态内部类对象访问非静态内部类。
局部内部类放在方法中,先定义、后new。调用方法时,调用该内部类的构造方法。
匿名内部类在界面开发中经常用到。
Object类的clone方法
实现方法:类A继承Cloneable接口,(A)this.clone赋值给类A的对象,作为返回值给clone方法的返回值。从而进行克隆。
实现机制:Object按照字段进行一个个拷贝。
浅克隆:对于可变对象变量,获得的只是对象的地址,拷贝得到的对象中若有变量指向可变对象,原对象和克隆得到的对象仍然所含的可变对象仍指向同一个对象,so改变其中一个对象会改变另外一个。(String的不可变性) ...?**?...