//有一个抽象类,是人,人都要吃。但是人范围很大,所以抽象出来,不同的人实现他自己吃的方法
abstract class Person{
abstract void eatsomething();
}
//人有很多种,这是一个素食主义者,只吃蔬菜
class Sushe extends Person{
void eatsomething(){
eat vegetable;
}
}
//肉食主义者,只吃肉
class Roushi extends Person{
void eatsomething(){
eat meat;
}
}
public static void main(String[] args){
//在餐会上,有一个素食主义,一个肉食主义
//一个实例,不仅可以实现为自己,还可以实现为基类,接口。。
Sushi p1 = new Person();
Roushi p2 = new Person();
//参会结束前,一直在吃
while( time is over ){
//不需要知道实际上是什么人,只要知道是个人(Person),能吃(eatsomething())就行
p1.eatsomething();
p2.eatsomething();
}
}
理解比较浅显,供你参考,代码无法运行,自行修改。。。。
抽象类 abstract class fruit
具体类 class apple extends fruit
class orange extends fruit
使用
fruit a = new apple();
fruit o = new orange();
抽象工厂方法!
给你举个例子:
如果你店铺出售两种饮料,一个是苹果汁,一个是菠萝汁。然后你苹果汁和菠萝汁的装杯工序是一样的,但是榨汁准备工作不同(并且你希望店员注意这个不同点),于是对于程序而言,你有一个叫做水果的父类,他有一个具体实现了的方法(装杯),还有一个榨汁方法。这个榨汁方法是要求子类自行实现的。所以父类没有必要实现,就把他定义为抽象方法。
因此水果这个类就变成了一个抽象类,它既不能实例化(因为有的方法对于编译器而言他根本不知道是要做什么),也没有实例化的必要(因为对于使用者来说,他要一杯“水果汁”是毫无真正意义的)。
恩……还有什么疑问?
抽象类可以有相应的实例,而不是抽象类"中"一定要有实例
抽象类是指存在只做声明而未进行实现的方法(抽象方法)的类
它是为了不同子类对自身方法的不同实现而存在的
抽象类abstract是不能进行实例化的,它必须有一个抽象方法,你需要建立一个类来继承该抽象类,来具体实现