抽象
abstract
抽象方法没有大括号,没有方法体
抽象方法存在的意义
根本意义,约定:自定义的规则
约定了返回值,访问权限,参数列表,,需要在重写的时候,重新第一方法体
约定大于配置,配置大于编码
抽象方法必修在一个抽象类里
当我们定义一个抽象类,这个抽象类中可以有哪些结构
属性,成员方法,构造器,抽象方法,常量
抽象类中能不能没有抽象方法
可以
抽象类是不能被实例化的
抽象类不能被创建对象
抽象类的构造器存在的意义:
为了约定子类的构造器必须和父类匹配
一个类如果继承了一个抽象类,就必须重写这个抽象类的所有抽象方法
abstract能修饰什么?
类 、 方法。
总结:抽象方法必须是public 和 protected
抽象类是不能被直接实例化的,需要依靠子类采用向上转型的方式处理
抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类
子类(如果不是抽象类)则必修重写类中所有的抽象方法
(如果子类没有实现父类的抽象方法,必须将子类定义为abstract)
接口
比抽象类更高级的抽象
抽象类也是比类更高级的抽象
声明:使用 interface关键字
接口中只能定义抽象方法,不能有属性,不能有方法.
(可以放静态常量和静态方法、默认方法)
接口中结构的特点:
接口中的方法默认是public
接口中的结构必须是public
接口可以被实现
如果一个类实现了一个接口,它就需要重写接口的所有方法
接口存在的意义:
约定
java 中存在多继承的,发生在接口之间
类与类之间是单继承
匿名实现类
public class Ch01 {
public static void main(String[] args) {
Abstr01 abstr01=new Abstr01() {
public void show(){
System.out.println("重写show方法");
}
};
abstr01.show();
}
}