JavaSe基础(15)-- abstact

abstract (抽象)

  • abstract是java的关键字之一,可以用来修饰方法、类
  • abstract修饰的方法称为抽象方法
  • abstract修饰的类称为抽象类

抽象方法

  • 只有方法声明,没有方法体的方法叫做抽象方法
  • 格式

    [修饰符]   abstract  返回值数据类型  方法名称([参数])  ;   
    

  • 注意:

    必须以分号结尾, 只能定义在抽象类中

抽象类

  • 所有的对象都是通过类来描绘的,但并不是所有的类都能描绘出具体的对象
  • 如果一个类没有足够的信息描绘出对象,那么这个类就叫做抽象类
  • 格式

    [修饰符] abstract class 类名{  } 
    

    JavaSe基础(15)-- abstact_第1张图片

  • 注意:

    抽象类不可以实例化,需要继承后使用

    继承抽象类,需要实现所有的抽象方法

    抽象类中的抽象方法不能为private

  • 示例:

    雇员示例:
    需求:公司中程序员有姓名,工号,薪水,工作内容。
    项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
    对给出需求进行数据建模。
    
    
    
    分析:
    在这个问题领域中,先找出涉及的对象。
    通过名词提炼法。
    程序员:
        属性:姓名,工号,薪水、
        行为:工作。
    经理:
        属性:姓名,工号,薪水,奖金。
        行为:工作。
    
    
    程序员和经理不存在着直接继承关系,
    
    但是程序员和经理却具有共性内容。
    可以进行抽取。因为他们都是公司的雇员 
    
    可以将程序员和经理进行抽取.建立体系.
    //描述雇员。
    
    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");
        }
    }
    
1、抽象类与抽象方法的关系
  • 包含抽象方法的类一定为抽象类
  • 抽象类不一定包含抽象方法
2、普通方法与抽象方法的区别

JavaSe基础(15)-- abstact_第2张图片

3、抽象类与普通类的区别

JavaSe基础(15)-- abstact_第3张图片

你可能感兴趣的:(JavaSe基础(15)-- abstact)