抽象类
概念:包含抽象方法的类称为抽象类。
抽象方法:该方法没有具体的实现,所以使用abstract方法来修饰
abstract class Shape{
public abstract void draw();
}
1、抽象类普通类的区别:
①抽象类多了一个抽象方法。
②抽象类不能直接被实例化。
③抽象类和普通类都可以被继承和重写,但抽象类不重写编译器会提示。
注意点:
Ⅰ:抽象类不能被实例化。(不能直接new)
Ⅱ:抽象类中可以有和普通成员一样的成员,就是不能实例化。
Ⅲ:一个普通类如果继承了抽象类,这个类需要重写这个抽象类当中 的所有抽象方法。
Ⅳ:一个抽象类A,继承了抽象类B之后,可以不重写抽象类B中的方法,但A被一个普通的类继承之后,一定要重写所有的抽象方法。(包含A和B中所有的抽象方法)
Ⅳ:抽象方法不能被private和final修饰
抽象类的意义:为了被继承
接口
Ⅰ:接口当中的方法都是没有具体实现的。
interface IShape{
public abstract void draw();
}
Ⅱ:一个类被interface修饰,就叫做接口。
Ⅲ:接口当中可以定义字段和抽象方法。
Ⅳ:接口当中的方法,默认全是public abstract
Ⅳ:接口也是不能被实例化的
Ⅵ:class Dog inplements IShape{}
Ⅶ:可以同时继承抽象类,也可以同时实现多个接口,但是类,只能继承一个,
Ⅷ:接口的出现,是为了弥补Java当中多继承的要求(一定是先继承类,再实现接口)
Ⅸ:接口可以拓展多个接口
interface D extends A,B,C {
void funcD();
}
常见的三个接口:
①Comparable
实现compareTo,一般用在类的内部
②比较器 Comparator,一般用在类的外部
实现compare方法
③Cloneable(标记当前这个类是可以被克隆的)
public interface Cloneable{}
接口里面什么都没有,此时这个接口叫做空接口
还涉及到深拷贝和浅拷贝
深拷贝:不仅拷贝了自己本身,还拷贝了里面的对象,这种拷贝叫做深拷贝