吴裕雄--天生自然 JAVA开发学习:多态

Posted tszr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴裕雄--天生自然 JAVA开发学习:多态相关的知识,希望对你有一定的参考价值。

Parent p = new Child();
public class Test 
    public static void main(String[] args) 
      show(new Cat());  // 以 Cat 对象调用 show 方法
      show(new Dog());  // 以 Dog 对象调用 show 方法
                
      Animal a = new Cat();  // 向上转型  
      a.eat();               // 调用的是 Cat 的 eat
      Cat c = (Cat)a;        // 向下转型  
      c.work();        // 调用的是 Cat 的 work
    
            
    public static void show(Animal a)  
      a.eat();  
        // 类型判断
        if (a instanceof Cat)    // 猫做的事情 
            Cat c = (Cat)a;  
            c.work();  
         else if (a instanceof Dog)  // 狗做的事情 
            Dog c = (Dog)a;  
            c.work();  
          
      

 
abstract class Animal   
    abstract void eat();  
  
  
class Cat extends Animal   
    public void eat()   
        System.out.println("吃鱼");  
      
    public void work()   
        System.out.println("抓老鼠");  
      
  
  
class Dog extends Animal   
    public void eat()   
        System.out.println("吃骨头");  
      
    public void work()   
        System.out.println("看家");  
      
public class Employee 
   private String name;
   private String address;
   private int number;
   public Employee(String name, String address, int number) 
      System.out.println("Employee 构造函数");
      this.name = name;
      this.address = address;
      this.number = number;
   
   public void mailCheck() 
      System.out.println("邮寄支票给: " + 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 class Salary extends Employee

   private double salary; // 全年工资
   public Salary(String name, String address, int number, double salary) 
       super(name, address, number);
       setSalary(salary);
   
   public void mailCheck() 
       System.out.println("Salary 类的 mailCheck 方法 ");
       System.out.println("邮寄支票给:" + getName()
       + " ,工资为:" + 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 class VirtualDemo 
   public static void main(String [] args) 
      Salary s = new Salary("员工 A", "北京", 3, 3600.00);
      Employee e = new Salary("员工 B", "上海", 2, 2400.00);
      System.out.println("使用 Salary 的引用调用 mailCheck -- ");
      s.mailCheck();
      System.out.println("\n使用 Employee 的引用调用 mailCheck--");
      e.mailCheck();
    

 

以上是关于吴裕雄--天生自然 JAVA开发学习:多态的主要内容,如果未能解决你的问题,请参考以下文章

吴裕雄--天生自然 JAVA开发学习:继承

吴裕雄--天生自然 JAVA开发学习:变量类型

吴裕雄--天生自然 JAVA开发学习:多线程编程

吴裕雄--天生自然 JAVA开发学习:日期时间

吴裕雄--天生自然 JAVA开发学习:发送邮件

吴裕雄--天生自然 JAVA开发学习:网络编程