/*
抽象类 abstract
abstract class A{
}
注意abstract类中不一定需要有abstract方法
但是有abstract方法的类中,该类一定是abstract方法
抽象类不可以被构造,一般被用于继承
如果一个类继承自一个抽象类,那么抽象类的方法必须要在子类中完善(覆盖)。
*/
//忽然发现多态+抽象类这样的组合非常好用啊!
public class Learn02{
public static void main(String[] aa){
//A a = new A();//A是抽象的; 无法实例化
B b = new B();
b.method1();
//看似是A,实际存的是B
//此时A的抽象方法已经覆盖了,所以可以直接调用
A a = new B();
a.method1();
System.out.println(\"----------\");
Staff p1 = new Programmer(\"1001\",\"ckmm\");
p1.signIn();
p1.work();
Staff p2 = new Boss(\"1002\",\"Remoo\",10002.98f);
p2.signIn();
p2.work();
System.out.println(\"----------\");
}
}
abstract class A{
private int a ;
abstract void method1();
}
class B extends A{
public void method1(){
System.out.println(\"覆盖了抽象类的方法\");
}
}
//类似一个模板
abstract class Staff{
private String id;
private String name;
public Staff(String id,String name){
this.id = id;
this.name = name;
}
public void signIn(){
System.out.println(name + \"已签到\");
}
public abstract void work();
}
class Programmer extends Staff{
public Programmer (String id , String name){
super(id,name);//父类构造方法
}
//实现(覆盖)
public void work(){
System.out.println(\"写程序\");
}
}
class Boss extends Staff{
private float bonus;
public Boss (String id , String name,float bonus){
super(id,name);//父类构造方法
this.bonus = bonus;
}
//实现(覆盖)
public void work(){
System.out.println(\"管理\");
}
}
来源:https://www.cnblogs.com/remyuu/p/15987800.html
本站部分图文来源于网络,如有侵权请联系删除。