java学习14-面向对象(abstract抽象类)

来源:互联网 发布:工信部证书有用吗 知乎 编辑:程序博客网 时间:2024/05/17 01:33

抽象类

——当描述事物时,没有足够的信息对该事物进行描述,那么该描述对应的类就是一个抽象类。

abstract class Demo//抽象类

{

         abstract /*抽象*/void show();

}

 

抽象类的特点:

(1)没有方法体的方法是抽象方法,一定定义在抽象类中。

(2)抽象类和抽象方法必须用abstract关键字所修饰。

(3)抽象类不可以被实例化。为什么?因为调用抽象方法没有意义。

(4)抽象类必须由其子类覆盖掉所有的抽象方法后,其子类才可以进行实例化。 否则,该子类还是一个抽象类。


注意:
(1)抽象类一定是一个父类。
(2)抽象类有构造方法,是给子类对象提供初始化动作的。
(3)抽象类中可以不定义抽象方法。
(4)抽象关键字不能和final、private、static关键字共存。


一般类和抽象类的区别

(1)相同之处:一般类和抽象类都用于描述事物。里面都可以定义属性和行为,以及构造函数。

(2)不同之处:一般类中不可以定义抽象函数,抽象类可以。一般类可以被实例化,抽象类不行。

 一般类可以被继承,也可以不被继承,抽象类一定要被继承,需要其子类覆盖所有的抽象方法子类才可以被实例化。


例子:

//抽象类package com.dragon.src;abstract class Employee {private String name;private String id;private double pay;//getter & setterpublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public double getPay() {return pay;}public void setPay(double pay) {this.pay = pay;}//构造函数public Employee() {}public Employee(String name, String id, double pay) {super();this.name = name;this.id = id;this.pay = pay;}//工作abstract void work();}//经理package com.dragon.src;public class Manager extends Employee {public Manager() {super();}public Manager(String name, String id, double pay) {super(name, id, pay);}@Overridevoid work() {System.out.println("Manage");}}//程序员package com.dragon.src;public class Programmer extends Employee {public Programmer() {super();}public Programmer(String name, String id, double pay) {super(name, id, pay);}@Overridevoid work() {System.out.println("Coding");}}//主函数package com.dragon.src;public class AbstDemo {/** * 主函数部分 * @param args */public static void main(String[] args) {Manager manager = new Manager("DRAGON", "3", 10000);manager.work();Programmer programmer = new Programmer("xiaoming", "343", 5000);programmer.work();}}


原创粉丝点击