美文网首页
2019-03-05 abstract

2019-03-05 abstract

作者: yangsunior | 来源:发表于2019-03-05 19:14 被阅读0次

Java abstract

  • abstract 可以被哪些关键字修饰?
    1. private ×
    2. static ×
    3. final ×
    4. public √
  • 抽象类是父类吗?
    答:是的。抽象类需要子类覆盖其中所有的抽象方法之后才能对子类实例化。
  • 简述抽象类与一般类的相同点。
    答:都是用来描述事物,都在内部定义成员。
  • 简述抽象类与一般类的不同点。
    1. 一般类有足够信息描述事物,抽象类描述的信息可能不足。
    2. 一般类不能定义抽象方法,只能定义非抽象方法。
      抽象类既能定义抽象方法,又能定义非抽象方法。
    3. 一般类可以被实例化,抽象类不能被实例化。

抽象方法

  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");
      }
}

相关文章

  • 2019-03-05 abstract

    Java abstract abstract 可以被哪些关键字修饰?private ×static ×final ...

  • java -abstract类、接口

    abstract类(抽象类) abstract类(抽象类) ** abstract()方法** abstract类...

  • abstract

    1.定义:修饰抽象类的关键字也是修饰抽象方法的关键字。一个方法如果用abstract修饰那么这个方法是没有方法体的...

  • ABSTRACT

    抽象类,(实际是为了模拟java中的类机制),证明不可直接被调用

  • Abstract

    With the rapid development of science and technology and ...

  • 程序员单词

    A abstract 抽象的abstract base class (ABC)抽象基类abstract class...

  • 软件开发英文词汇

    A abstract| 抽象的|abstract base class (ABC)抽象基类abstract cla...

  • 编程中常用的英语单词

    A abstract 抽象的 abstract base class (ABC)抽象基类 abstract cla...

  • 编程词汇整合

    abstract 抽象的abstract base class (ABC)抽象基类abstract class 抽...

  • 编程词汇整合

    abstract 抽象的abstract base class (ABC)抽象基类abstract class...

网友评论

      本文标题:2019-03-05 abstract

      本文链接:https://www.haomeiwen.com/subject/xoaouqtx.html