//抽象例子
abstract class Fruit {
static{ System.out.println("实例化父类1");}protected Fruit(){
System.out.println("实例化父类");
toPlant();
toEat();
}
protected void toEat(){};
abstract protected void toPlant();//抽象方法没有主体
}
class Banana extends Fruit{
//覆写
protected Banana(){
System.out.println("实例化子类 Banana");
}
@Override
protected void toEat() {
System.out.println("Eat a Banana");
}
@Override
protected void toPlant() {
System.out.println("Plant a Banana");
}
}
class Orange extends Fruit{
static{ System.out.println("实例化子类2");}
public Orange() {
System.out.println("实例化子类 Orange");
}
protected void toEat() {
System.out.println("Eat a Orange");
}
protected void toPlant() {
System.out.println("Plant a Orange");
}
}
public class TestFruit {
public static void main(String[] args) {
new Banana();
new Orange();
}
}
//非抽象例子
class Fruit {
static{ System.out.println("实例化父类1");}
protected Fruit(){
System.out.println("实例化父类");
toPlant();
toEat();
}
protected void toEat(){};
protected void toPlant(){System.out.println("实例化父类Plant");};
}
class Banana extends Fruit{
//覆写
protected Banana(){
System.out.println("实例化子类 Banana");
}
@Override
protected void toEat() {
System.out.println("Eat a Banana");
}
@Override
protected void toPlant() {
System.out.println("Plant a Banana");
}
}
class Orange extends Fruit{
static{ System.out.println("实例化子类2");}
public Orange() {
System.out.println("实例化子类 Orange");
}
protected void toEat() {
System.out.println("Eat a Orange");
}
protected void toPlant() {
System.out.println("Plant a Orange");
}
}
public class TestFruit {
public static void main(String[] args) {
new Fruit();
new Banana();
new Orange();
}
}