抽象的概念

所谓抽象就是不具体,不确定,对应到抽象方法当中就是方法没有方法体
- 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。
- 抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。
如何使用抽象类和抽象方法
- 不能直接创建 :new 抽象类对象。
- 必须用一个子类来继承抽象父类。
- 子类必须重写父类当中的所有的抽象方法。重写实现(去掉abstract关键字,然后补上方法体)
- 创建子类对象进行使用。
注意事项
抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。
抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
示例
此示例也是多态的示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| abstract class Pet { public String name; public String color;
public Pet(String name, String color) { this.name = name; this.color = color; }
public abstract void eat();
public abstract void sleep();
public abstract void active(); }
class Cat extends Pet { public Cat(String name, String color) { super(name, color); }
@Override public void eat() { System.out.println(color + " " + name + " " + "猫吃鱼"); }
@Override public void sleep() { System.out.println(color + " " + name + " " + "猫睡觉呼呼呼。。。"); }
@Override public void active() { System.out.println(color + " " + name + " " + "猫玩毛线球"); } }
abstract class Dog extends Pet{
public Dog(String name, String color) { super(name, color); }
@Override public void eat() { System.out.println(color + " " + name + " " + "狗吃骨头"); }
@Override public void sleep() { System.out.println(color + " " + name + " " + "狗睡觉哈呼哈呼。。。"); } }
class HaShiQi extends Dog{ public HaShiQi(String name, String color) { super(name, color); }
@Override public void active() { System.out.println(color + " " + name + " " + "哈士奇拆家"); } }
class DaHuang extends Dog{ public DaHuang(String name, String color) { super(name, color); }
@Override public void active() { System.out.println(color + " " + name + " " + "大黄 忠心看家"); } } public class Test1 { public static void main(String[] args) { Pet pet = new HaShiQi("二哈哈","黑色"); pet.eat(); pet.sleep(); pet.active(); Pet pet2 = new DaHuang("花儿","黄色"); pet2.eat(); pet2.sleep(); pet2.active(); Pet pet3 = new Cat("删除","绿色"); pet3.eat(); pet3.sleep(); pet3.active(); } }
|
