再次回顾java基础时,发现之前一直没有理解,抽象和接口的由来和使用场景。现在发现可以简单理解了,在此记录方便以后回顾 。
1.抽象
定义:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。也可以理解为笼统地、含糊不清、看不懂具体如何实现的意思。
特点:
1.抽象方法一定在抽象类中;
2.必须被abstract关键字修饰;
3.成员属性必须不能是 private(私有) 修饰符修饰
4.抽象类不可以直接new一个对象出来,抽象方法必须由子类复写其所有抽象方法后,建立子类对象调用。
5.成员方法可包含普通方法(虚方法)和abstract(抽象)修饰的成员方法
6.子类可选择性的重写虚方法,必须重写父类的所有抽象方法,若没全部复写,则子类仍是一个抽象方法。
举例:学生都有学习的方法,但不同的学生学习内容也不一样,那么在父类中学习这个方法就可以定义为抽象方法
2.接口
定义:在抽取共有属性和方法时,那些非共有,个别对象才具有的方法,即为接口。
特点:
1.接口是对外暴露的规则;
2.接口是程序的功能扩展;
3.接口可以用来多实现(原理是接口中无方法主体,可由子类任意定义),用来弥补java中类不能多继承的不足;
4.接口不可实例化,接口里不能包含普通方法
5.接口与接口之间可以有继承关系。
举例:抽烟就是一个个别对象才有的方法,抽烟的人在创建对象时实现抽烟的接口,不抽烟的人不实现即可。
abstract class Stutent{
abstract void study();
}
interface smoking{
void smoke();
}
//zhangsan抽烟
class zhangsan extends Stutent implements smoking{
void study(){
System.out.println("学习java");
};
public void smoke(){};
}
//lisi不抽烟
class lisi extends Stutent{
System.out.println("学习python");
}