Java抽象

/* File name : AbstractDemo.java */
public class AbstractDemo
{
   public static void main(String [] args)
   {

      /*
         1.抽象类 无法实例化
         2.类的功能仍然存在,它的字段,方法和构造函数都以相同的方式进行访问。
         你只是不能创建一个抽象类的实例
      */
         // Employee emp = new Employee("George W.", "Houston, TX", 43);

      Salary s = new Salary("张*", "大连设计城", 3, 3600.00);
      s.mailCheck();

      // private 实体变量只能在Salary中访问
      // s.salary = 1900;

      // Employee e = new Salary("李*", "大连高新区", 2, 2400.00);
      // System.out.println(e instanceof Salary);

      // System.out.println("\n Call mailCheck using Employee reference--");
      // e.mailCheck();
    }
}
/*使用关键字 abstract 来声明一个抽象类。
   它出现在关键字 class 的前面*/
public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   // 姓名 地址 员工编号
   public Employee(String name, String address, int number)
   {
      System.out.println("构造一个员工");
      this.name = name;
      this.address = address;
      this.number = number;
   }
   public double computePay()
   {
     System.out.println("Inside Employee computePay");
     return 0.0;
   }
   public void mailCheck()
   {
      System.out.println("Employee工资检查邮件发给: " + this.name
       + " " + this.address);
   }
   public String toString()
   {
      return name + " " + address + " " + number;
   }
   public String getName()
   {
      return name;
   }
   public String getAddress()
   {
      return address;
   }
   public void setAddress(String newAddress)
   {
      address = newAddress;
   }
   public int getNumber()
   {
     return number;
   }

  public static void main(String[] args) {

  }

   /*
   1.如果一个类中含有一个抽象方法,类必须也是抽象的。
   抽象方法无需定义,并且它的签名以分号结束,不需要花括号
   2.任何一个子类必须覆盖这个抽象方法,
   或者继续将它声明为抽象方法。
   3.抽象方法不能有方法体
   */
    public abstract void travel();
}
/* File name : Salary.java */
public class Salary extends Employee
{
   private double salary; //Annual salary
   // 姓名 地址 员工编号 工资
   public Salary(String name, String address, int number, double
      salary)
   {
       super(name, address, number);
       setSalary(salary);
   }
   public void mailCheck()
   {

       System.out.println("【Salary】工资检查邮件发给:" + getName()
       + " with salary " + this.salary);
   }
   public double getSalary()
   {
       return salary;
   }
   public void setSalary(double newSalary)
   {
       if(newSalary >= 0.0)
       {
          salary = newSalary;
       }
   }
   public double computePay()
   {
      System.out.println("计算工资付给:" + getName());
      return salary/52;
   }

  // // 抽象方法实现
  public  void travel(){

  }
  // 声明
  // public abstract void travel();

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是抽象类?当然是比类还抽象的类了=。=本文基于Mars老师的Java4Android视频。 抽象函数 只有函数...
    Sia_Coding阅读 9,317评论 1 8
  • 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。接口...
    Q南南南Q阅读 2,958评论 0 3
  • 什么是抽象: 抽象简单来讲就是将事物所拥有的特性归结于一个类,并且通abstaract关键字来定义的的类。 抽象类...
    这个名字不好听阅读 3,427评论 0 1
  • Java抽象类、接口、内部类(静态内部类,非静态内部类、匿名内部类)、枚举类 知识点总结 一.抽象类 类的基本特...
    writeanewworld阅读 4,871评论 0 1
  • 今天是星期六,我在家里读了一本书名字叫狼图腾这本书,当我读完这本书我既感动又悲伤。 这本书由作者历经三十余载精心创...
    学海之舟阅读 1,742评论 0 0

友情链接更多精彩内容