1.抽象类(abstract)
(1)特点
①方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须定义到抽象类中,该类也必须被abstract修饰
②抽象类不可以被实例化,因为调用抽象方法没有意义。
③抽象类必须有子类覆盖所有的抽象方法,该子类才可以实例化,否则,这个子类还是抽象类(2)常见问题
①抽象类中有构造函数吗?
有,用来给子类对象初始化
②抽象类可以不定义抽象方法吗? 可以。目的是不让该类创建对象,通常这个类中的方法有方法体,却没有内容 ③抽象关键字不可以和哪些关键字共存? private,static,final ④抽象类和一般类的异同 相同:都是用来描述事物的,都在内部定义了成员 异同:a.一般类中有足够的信息描述事物,抽象类描述事物的信息可能不足 b.一般类中不能定义抽象方法抽象类可以定义抽象方法,同时也可以定义非抽象方法 c.一般类可以被实例化,抽象类不可以被实例化2.接口(interface)
接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法()
(1)固定的修饰符
①全局常量:public static final
②抽象方法:public abstract
(2)特点
①一个类可以实现多个接口,而且在继承另一个类的同时,还可以实现多个接口。
②接口的出现避免了单继承的局限性,接口与接口之间是继承关系,而且接口可以多继承。
(3)抽象类和接口的异同
①相同点:
都是不断向上抽取而来的
②不同点: a.抽象类需要继承,而且只能单继承 接口需要被实现,而且可以多实现b.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法
接口中只能定义抽象方法,必须由子类去实现c.抽象类的继承,是 is 关系,在定义该体系的基本共性内容。
接口的实现是 like 关系,在定义体系额外功能。(4)接口的应用:
接口类型的引用,用于接受(指向)接口的子类对象。
(5)接口的代码实现
/*笔记本电脑使用。为了扩展笔记本的功能,但日后出现什么功能设备不知道。定义一个规则,只要日后出现的设备都符合这个规则就可以了。规则在java中就是接口。*/interface USB{ public abstract void open(); public abstract void close();}class BookPc{ public static void main(String[] args) { useUsb(new UPan()); useUsb(new UsbMouse()); } public static void useUsb(USB u) { if(u!=null) { u.open(); u.close(); } }}class UPan implements USB{ public void open() { System.out.println("UPan open"); } public void close() { System.out.println("UPan close"); }}class UsbMouse implements USB{ public void open() { System.out.println("UsbMouse open"); } public void close() { System.out.println("UsbMouse close"); }}