美文网首页
Java抽象

Java抽象

作者: 凹特曼 | 来源:发表于2016-01-12 16:58 被阅读0次
    /* 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();
    
    }
    

    相关文章

      网友评论

          本文标题:Java抽象

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