• Java抽象类简单学习


    使用抽象类应该注意的几个要点:

    1. 包含一个或者多个抽象方法的类必须被声明为抽象类. 
    2. 将类声明为抽象类,不一定含有抽象方法.
    3. 通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.
    4. 抽象类不可以被实例化.即不能创建这个类的对象 
    实例代码:

    import java.util.*;
    
    /**
     * This program demonstrates abstract classes.
     * @version 1.01 2004-02-21
     * @author Cay Horstmann
     */
    public class PersonTest
    {
       public static void main(String[] args)
       {
          Person[] people = new Person[2];
    
          // fill the people array with Student and Employee objects
          people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
          people[1] = new Student("Maria Morris", "computer science");
    
          // print out names and descriptions of all Person objects
          for (Person p : people)
             System.out.println(p.getName() + ", " + p.getDescription());
       }
    }
    
    abstract class Person
    {
       public Person(String n)
       {
          name = n;
       }
    
       public abstract String getDescription();
    
       public String getName()
       {
          return name;
       }
    
       private String name;
    }
    
    class Employee extends Person
    {
       public Employee(String n, double s, int year, int month, int day)
       {
          super(n);
          salary = s;
          GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
          hireDay = calendar.getTime();
       }
    
       public double getSalary()
       {
          return salary;
       }
    
       public Date getHireDay()
       {
          return hireDay;
       }
    
       public String getDescription()
       {
          return String.format("an employee with a salary of $%.2f", salary);
       }
    
       public void raiseSalary(double byPercent)
       {
          double raise = salary * byPercent / 100;
          salary += raise;
       }
    
       private double salary;
       private Date hireDay;
    }
    
    class Student extends Person
    {
       /**
        * @param n the student's name
        * @param m the student's major
        */
       public Student(String n, String m)
       {
          // pass n to superclass constructor
          super(n);
          major = m;
       }
    
       public String getDescription()
       {
          return "a student majoring in " + major;
       }
    
       private String major;
    }
    


    在代码块:

     for (Person p : people)
             System.out.println(p.getName() + ", " + p.getDescription());

    中p.getDescription(),将引用具体子类的子类对象的方法.

    不可以省略Person类中的getDescription(),原因是编译器只允许调用在类中声明的方法. 

  • 相关阅读:
    初次使用树莓派并启用root管理员(登录root管理员)
    windows安装laravel框架
    树莓派Raspbian Root密码是多少?
    树莓派学习笔记(1)解决用putty连接时出现connection refused的办法
    linux 根据端口kill掉进程
    swoole入门
    linux环境安装redis及扩展
    linux 命令
    linux 配置域名到指定目录
    微信公众号开发遇到的问题
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697325.html
Copyright © 2020-2023  润新知