Java 추상적 클래스 요점 및 실례 간단히 학습

2933 단어 Java추상류
추상 클래스를 사용할 때 주의해야 할 몇 가지 요점:
하나 이상의 추상적인 방법을 포함하는 클래스는 반드시 추상적인 클래스로 성명되어야 한다.클래스를 추상류로 성명하는 것은 반드시 추상적인 방법을 포함하는 것은 아니다.일반적으로 추상류에는 구체적인 방법을 포함해서는 안 된다고 생각하며, 가능한 한 통용되는 영역과 방법을 초류에 두는 것을 권장한다.추상류는 실례화되어서는 안 된다.이 클래스의 객체 인스턴스 코드를 만들 수 없습니다

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 () 을 생략할 수 없습니다.

좋은 웹페이지 즐겨찾기