抽象类
产生的原因:父类本身的方法没有实质的内容,存在的目的就只是为了其他的子类进行重写,父类本身也不需要去创建实例
像这种不需要去实例化就可以把这个类作为一个"抽象类"
像这种本身没有方法体,只是为了被子类重写的方法,就可以把这个方法作为一个"抽象方法"
Java中使用abstract关键字来描述抽象类和抽象方法
abstract关键字存在的意义,就是让程序员明确的告诉编译器,这个类就是一个抽象的类,不应该进行实例化,于是编译器就要做好相关的检查工作
抽象方法不需要方法体
抽象方法只能在抽象类中存在(也可以在接口中存在),不能在普通的类中存在
抽象的方法存在的意义就是为了让子类进行重写
abstract public class Shape{
abstract public void func();
}
接口
interface
接口是抽象类的更进一步
抽象类只是不能实例化,但是其他各个方面都和普通的类差不多
接口就更抽象了,不光不能实例化,同时也具备类的各种特性
接口中也可以放抽象方法,这里的抽象的方法可以不写abstract,在接口中的方法不能是普通方法(写或者不写,都是抽象方法)
接口中也不能放普通的属性,而是public static final修饰的属性
接口不能继承自其他的类,但是可以 继承其他的接口
接口不能被类继承,而是被其他的类**“实现”**
某个类,实现了这个接口
"implements"
public interface Shape{
public static final int num=10;
abstract public void draw();
}
public class Rect implements Shape{
public void draw(){
//
}
}
抽象类和接口的对比:
1.抽象类和普通的类差不多,就是不能实例化,接口和普通的类差别大(属性,方法)
2.一个类只能继承一个抽象类,一个类可以同时实现多个接口
为什么发明接口这样的语法?
解决Java不能多继承的问题