多态。
动态多态用instanceof判断之后,要调用子类的方法,需要强转。
异构集合:
存放不同类型的数据
用instanceof 判断子类,用强转转换子类来调用子类方法
abstract
抽象方法,只有方法的声明没有方法的实现,是父类拥有该方法,但是只有到子类才知道这个方法的具体实现
当一个类拥有一个抽象的方法的时候,这个类叫做抽象类。抽象类是无法实例化。
public abstract class People{
}
当一个类继承一个抽象类,必须要实现抽象类里的抽象方法,否则自己也必须是抽象。
抽象类一样有属性,构造器,抽象方法,和非抽象方法。//抽象类不一定要有抽象方法,但是有抽象方法的一定是抽象类。但是没有抽象方法的抽象类,失去了设计的意义。
抽象类的构造器是为了让继承他的子类能够产生对象
抽象类一样可以引用子类的对象
抽象类也是一个类,只能做单继承(is a 关系)
接口,使用关键字interface,表明这是一种与类无关的全新数据类型。
访问修饰符只能是public或者默认
接口内属性只能是公共的静态常量
就算一个修饰符不写,直接定义 int a=2; 也会默认为静态公共常量
接口中没有构造方法一说
接口里面,只能有抽象方法(在最新的JDK1.8中,接口可以拥有实现方法,只不过要加default关键字 public default void test (){} )
就算不写public abstract,也会默认为公共的抽象方法(不能加static)
void a();
接口一样可以用instanceof 一样可以用强转
开闭原则:一个好的设计,应该对于扩展是开放,对于修改是关闭的
在没有继承关系的类之间,也能让他们具有共享行为,叫做接口, 为JAVA中的类与类之间的单继承,提供多实现。
我给一个类添加一个新的借口,起名的时候在后面加一个able
接口的引用可以指向实现类的对象//只能看到接口的属性和方法及Object
接口用法第一,接口可以继承接口而且是可以多继承的( public interface Aable extends Babel,Cable{})。第二,类可以实现接口(关键字 implements public class A implements Babel{} )类实现接口必须实现接口类所有的抽象方法,否则这个类是抽象类。类实现接口方法的时候可以多实现(public class A implements Babel,Cable{})
接口和抽象的不同。
在设计的时候需要确认那些方法写入父类,那些写入接口?
答:把一个类与生俱来的方法,写入父类中。把附属添加的行为写到接口上去,最好写入小接口中,提高灵活性。
内聚度(聚合度)与耦合度:好的程序设计应该是高内聚低耦合。前者指的就是复用,后者是分离。
面向接口编程是OOP的核心
关于接口的设计和使用中,还不是很熟练。没有充分的理解方法的重写。在创建很多接口,其实应该是类,应该是把类中的一些方法提出来作为接口在不同的类中进行重写,而不是把不同的类写成不同的接口