抽象類(abstract class)與抽象方法


package cm.aff.abst;
/*
 abstract:抽象的,,可以修飾類,方法
 1.修飾類: 抽象類:
                 ①不能被實例化
                 ②有構造器的
                 ③凡是類都有構造器
                 ④抽象方法所修飾的類一定是抽象類
                 ⑤抽象類中可以沒有抽象方法
⑥不能用abstract修飾屬性,私有方法,構造器,靜態方法,final的方法 2.修飾方法:抽象方法: ①格式:沒有方法體, 包括{ }.如: public abstract void eat(); ②抽象方法只保留方法的功能,而具體的執行,交給繼承抽象類的子類,由子類重寫此抽象方法 ③若子類繼承抽象類,並重寫了所有的抽象方法,則此類是一個 "實體類" ,即可以被實例化 ④若子類繼承抽象類,沒有重寫所有的抽象方法,意味着此類中仍有抽象方法,則此類必須聲明為抽象的
*/ public class TestAbstract { public static void main(String[] args) { //Person p1 = new Person();//不能被實例化 //p1.eat(); Student s = new Student(); s.eat(); Person p = new Worker();//多態 p.eat(); } } abstract class Person { String name; public Person(){ } public Person(String name){ this.name = name; } public abstract void eat(); //方法中的語句不能被執行了,里面的語句不要了 //給他一個abstract標識,保留了功能,但沒有具體的實現, 得由子類來實現了 public abstract void walk() ; } class Student extends Person { public void eat() { System.out.println("學生吃飯"); } public void walk() { System.out.println("學會走路"); } } class Worker extends Person { public void eat() { System.out.println("工人吃飯"); } public void walk() { System.out.println("工人走路"); } }
輸出結果:

學生吃飯
工人吃飯

 

 

使用練習:

package cm.aff.abst;

public class TestEmployee {
public static void main(String[] args) {
    //Manager m =  new Manager();
    Employee e1 = new Manager();//使用多態  虛擬方法調用,和上面一樣效果
    e1.work();
    
    Employee e2 = new     CommonEmployee(); 
    e2.work();
   }
}

  abstract class   Employee{
      private  String name;
      private int id ;
      private double salary;
      public abstract void work();
      
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
  }
  
    class Manager extends Employee{
        private double bonus;
        public void work(){
            System.out.println("監督工作,提高效率");
        }
        public double getBonus() {
            return bonus;
        }
        public void setBonus(double bonus) {
            this.bonus = bonus;
        }
    }
    
    class CommonEmployee extends Employee{
        public void work(){
            System.out.println("流水線工作");
        }
    }
輸出結果:

  監督工作,提高效率
  流水線工作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM