抽象类
1.抽象方法和普通方法的区别:
抽象方法 public 方法名();
普通方法 public 方法名(){
方法体
}
区别在于有无方法体
2.抽象类与普通类的区别:
1.抽象类不能被实例化,但是可以创建一个引用变量,其类型是抽象类,指向非抽象的子类实例
2.普通类可以被实例化
3.抽象类和抽象方法的使用:
①抽象类中可以没有抽象方法,但是有抽象方法的类必须定义为抽象类
②如果子类没有实现父类所有的抽象方法,那么子类必须被定义为抽象类
③没有抽象构造方法,也没有抽象静态方法
④抽象类中可以有非抽象的构造方法,创建子类的时候随时调用
⑤一个文件中可以有多个class文件,但是只能有一个public class ,main只能写在public class内
接口理论知识
1.什么是接口:
接口时has-a的关系,继承是单继承,是is-a的关系
2.接口的特性:
①接口中可以有常量,但是不可以有变量
②接口中所有的方法都是抽象方法
③接口跟抽象类一样,不可以被实例化
④接口的命名规则与类一样
⑤一个类只有一个直接父类,但是可以有多个接口,通过关键字implement 可以实现多个接口。如果有继承关系,那么implement必须在extends后面
⑥接口的实现类必须实现接口所有的方法
3.接口和抽象类的区别:
接口利于代码维护,抽象类利于代码复用
4.接口和抽象类的:
相同点:
①都不能被实例化
②都包含有抽象方法
③代表系统的抽象层
不同点:
①抽象类中可以有默认的抽象方法,但是接口中只有公共的抽象方法或公共的静态常量(接口利于维护,抽象类利于复用)
②一个类只有一个直接的父类,但是可以有多个接口
③已存在的继承数,可以方便的抽取接口,但是抽取方法不容易