2019-03-05 abstract

2019-03-05  本文已影响0人  yangsunior

Java abstract

抽象方法

  1. 抽象方法只有声明,没有实现,被abstract修饰。
  2. 抽象方法必须定义在抽象类中,类也被abstract修饰。
  3. 构造方法、类方法(static修饰)不能被声明为抽象方法。

抽象类

  1. 抽象类不可以被实例化。(调用抽象方法没有意义

  2. 抽象类的子类可以被实例化。(子类为非抽象子类时,可实例化
    非抽象子类满足的充分条件: 完全覆盖父类中的抽象方法

public abstract class Animal {
    abstract void eat();
    abstract void breath();
}
public class Cat extends Animal {
    @Override
    void eat() {
        System.out.println("I like fish.");
    }

    @Override
    void breath() {}
    
    void run() {
        System.out.println("i can run.");
    }
}
public abstract class Dog extends Animal {
    void eat() {
        System.out.println("I like bone.");
    }
}
public class Hound extends Dog {
    @Override
    void breath() {
        System.out.println("Hound like fresh air.");
    }
}
public class Test {
    public static void main(String args[]) {
        (new Cat()).eat();
        (new Hound()).eat();
        (new Hound()).breath();
    }
}

抽象类继承图表

abstract.jpg

抽象类建模实例分析

雇员示例:
需求:公司中程序员有姓名,工号,薪水,工作内容。
项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
对给出需求进行数据建模。

分析:
在这个问题领域中,先找出涉及的对象。
通过名词提炼法。

程序员:
属性:姓名,工号,薪水、
行为:工作。

经理:
属性:姓名,工号,薪水,奖金。
行为:工作。

程序员和经理不存在着直接继承关系,但是程序员和经理却具有共性内容。可以进行抽取。因为他们都是公司的雇员,可以将程序员和经理进行抽取.建立体系.


//描述雇员。
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 Programmer extends Employee
{
      Programmer(String name,String id,double pay)
      {
            super(name,id,pay);
      }
      public void work()
      {
            System.out.println("code...");
      }
}
//描述经理。
class Manager extends Employee
{
      private int bonus;
      Manager(String name,String id,double pay,int bonus)
      {
            super(name,id,pay);
            this.bonus = bonus;
      }
      public void work()
      {
            System.out.println("manage");
      }
}
上一篇下一篇

猜你喜欢

热点阅读