抽象类
为什么要使用抽象类
-
因为有的时候,父类的方法的逻辑基本没有什么用处, 所以隐藏父类方法的实现, 让子类完成具体实现的细节
-
有的时候 父类描述的比较宽泛, 比如: Person当中study方法, 用在Student类比较合适, 用在Worker类反而不太恰当
-
提高代码的复用性. 在父类中定义的某些方法子类必须要完全重写, 在父类定义的另外一些方法, 子类可以不重写. 也就是说决定权在父类.
抽象类的定义
在java中, 方法隐藏具体的实现细节的类
在父类中 有一些方法必须要让子类重写, 那这样的方法就叫抽象方法(父类规定子类必须重写的方法 eat , 必须重写, 由父类的业务说的算)
在父类中, 有一些方法不需要子类重写, 也就是说某些子类可以重写这个方法, 也可以不重写这样的方法, 这样的方法就叫普通方法 (重写不重写, 由子类的业务说的算 )
如何创建抽象类
1. 如何创建抽象类 在类的声明上 使用关键字 abstract
2. 如何创建抽象方法 在类的内部, 方法上使用关键字 abstract ,并且 抽象方法不具备方法体
抽象类规则
1. 在抽象类中, 可以有抽象方法, 也可以有普通方法. 2. 在抽象类中, 可以有变量, 也可以有常量. 3. 如果在一个类中有抽象方法, 那么这个类必须是抽象类 4. 抽象类虽然有构造方法,但不允许通过构造方法来创建本类对象 5. 抽象类只能通过多态的形式来实例化对象. 6. 抽象类是可以继承抽象类的, 但是继承的抽象类必须要有子类来实现所有继承来的抽象方法 7. 抽象类可以单继承, 但是不能多继承. 8. 抽象类的声明及抽象方法,不可以使用final修饰, 也不可以使用static修饰.
接口
它的底层的含义 跟 抽象类很相似
为什么使用接口
-
隐藏实现的细节
-
复用性比较强 (方法 对象 成员)
怎么使用接口
创建一个文件 这个文件不再是使用class关键来描述类信息 而是使用interface这个关键字来描述类 就叫接口
public interface Person { }
接口规则
1. 在接口中, 是不可以有变量的, 但是可以有常量, 默认情况下 可以不写 public static final标签:重写,接口,抽象,子类,抽象类,父类,方法 From: https://www.cnblogs.com/y6909/p/16649020.html
2. 在接口中, 是不可以有普通方法的, 但是可以有抽象方法, 默认情况下 可以不写 public abstract
3. 在接口中, 是不存在任何构造方法的, 所以接口是不能实例化对象的.
4. 接口必须要有实现类 (抽象类 的 实现是用的extends 接口的 实现是 implements 实现类)
(接口名字 + Impl ===> 是一个普通的类, 这个类来实现接口 并重写 接口中 所有的方法)
5. 接口的实现类中, 必须要重写接口的所有的抽象方法
6. 一个接口 可以有多个实现类, 一个实现类可以实现多个接口
7. 接口可以继承接口, 可以单继承, 也可以多继承
8. 接口中的所有的抽象方法必须用public权限修饰符