4)抽象类是用来被继承的,抽象类的子类如果不是抽象的,那该子类一定要重写抽象类中所有的抽象方法。
3、提问1)为什么要定义抽象类?是因为一个类过于抽象,其本身的一些方法的实现是没有意义的,这些方法由其子类去实现会更有意义。2)为什么抽象类必须要声明无具体实现的抽象方法?是为了让子类去重写这些抽象方法,以便使用多态。4、冷门1)抽象类有自己的构造方法。-----------------------------2)抽象类的构造方法不是抽象的。-----------------------------------3)抽象类的构造方法可以被重载。---------------------------------------------4)抽象类的子类首先会在自己的构造方法中首先调用抽象父类的构造方法。-----------------------------------------------------------------------------------------5、举例基于上一讲多态的例子修改:
package com.hpe.abstra;abstract class Animal { PRivate String name; Animal(String name) { this.name = name; } public abstract void enjoy();}class Cat extends Animal { private String eyesColor; Cat(String n, String e) {super(n); this.eyesColor = e; } public void enjoy() { System.out.println("猫叫声······"); }}class Dog extends Animal { private String furColor; Dog(String n, String f) { super(n); this.furColor = f; } public void enjoy() { System.out.println("狗叫声······");} } class Lady { private String name; Animal pet; Lady(String name, Animal pet) { this.name = name; this.pet = pet; } public void myPetEnjoy() { pet.enjoy(); }}public class TestAbstract { public static void main(String[] args) { Cat c = new Cat("catName", "blue"); Dog d = new Dog("dogName", "black"); Lady l1 = new Lady("l1", c); Lady l2 = new Lady("l2", d); l1.myPetEnjoy(); l2.myPetEnjoy(); }}运行结果:猫叫声······狗叫声······
新闻热点
疑难解答