0
点赞
收藏
分享

微信扫一扫

Abstract Classes in java

小a草 2022-04-08 阅读 95
  • Could you have omitted the abstract method altogether from the Person superclass, simply defining the getDescription methods in the Employee and Student subclasses?
  • If you want did that, then you wouldn’t have been able to invoke the getDescription method on the variable p.
  • The compiler ensures that you invoke only methods that are declared in the class.
package abstractClasses;

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());
    }
}

// Enables transform audio video link to to html5 embed audio video tags.
package abstractClasses;

public abstract class Person 
{
    public abstract String getDescription();

    private String name;

    public Person(String n) 
    {
        name = n;
    }

    public String getName() 
    {
        return name;
    }
}
// Enables transform audio video link to to html5 embed audio video tags.
package abstractClasses;

import java.util.Date;
import java.util.GregorianCalendar;

public class Employee extends Person{
    private double salary;
    private Date hireDay;

    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;
    }
}
package abstractClasses;

public class Student extends Person{
    private String major;

    /**
     * @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;
    }
}

Abstract methods are an important concept in the Java programming language.
You will encounter them most commonly inside interfaces.

Todo:The use of extends and super is explained separately.

举报

相关推荐

0 条评论