---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
3.9抽象类
1、特点:⑴、方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须被定义在抽象类中,该类也得被abstract修饰。
⑵、抽象类不可以实例化,因为调用方法没有意义。
⑶、抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则该类还是抽象类。
2、问题细节:⑴、抽象类中有构造函数,用于给子类对象进行初始化
⑵、抽象类中也有非抽象方法,目的就是不让该类创建对象
3、抽象类不可以与那些关键字共存?
⑴、private:如果私有了,就不可以被子类覆盖了
⑵、static:
⑶、final:final是最终的,被他修饰的不可以覆盖。
4、抽象类与一般类的异同点:
⑴、相同:他们都是用来描述事物的,都在内部定义成员
⑵、不同:①、一般类有足够的信息描述事物,而抽象类信息不足
②、抽象类可定义抽象方法和非抽象方法,而一般类只能定义非抽象方法
③、抽象类不可以实例化,而一般类可以。
5、抽象类一定是父类,因为需要子类覆盖其所有的抽象方法后,才能对子类实例化。
abstract class Employee {private String name;private String id;private double pay;Employee(String name, String id, double pay) {this.name = name;this.id = id;this.pay = pay;}public abstract void work();}class Manager extends Employee{private int bonus;Manager(String name, String id, double pay, int bonus) {super(name,id,pay);this.bonus = bonus;}@Overridepublic void work() {System.out.println("Manager work");}}class Pro extends Employee{Pro(String name, String id, double pay) {super(name,id,pay);}@Overridepublic void work() {System.out.println("Pro work");}}public class AboutAbstract {public static void main(String[] args) {Manager man = new Manager("hufei", "4556", 11110, 256);man.work();}}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<ahref="http://edu.csdn.net" target="blank"></a>