zoukankan      html  css  js  c++  java
  • Java抽象类简单学习

      -------------疯狂软件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(),原因是编译器只允许调用在类中声明的方法.

      疯狂软件java培训、ios培训新年钜惠,报名Java就业班免费赠送java基础班,报名iOS就业班免费赠送iOS基础班,本月火速抢座中,为回报广大新老学员,值此新年之际推出报读就业班赠送基础班的活动。

      -----------------------------------2014年初活动--------------------------------------

      疯狂软件Java学习班方向:

      1.报读JavaEE就业班赠送基础班课程。

      2.开班一次性(一个月内)交清JavaEE就业班学费,赠送基础班全套课程。

      疯狂软件iOS学习班方向:

      1.报读iOS应用+手游就业班赠送iOS基础班课程。

      2.开班一次性(一个月内)交清iOS应用+手游就业班就业班学费,赠送基础班全套课程。

  • 相关阅读:
    Step By Step(C++模板类)
    Step By Step(C++模板重载和特化)
    Step By Step(C++模板推演)
    Step By Step(C++模板Policy)
    Step By Step(C++模板参数)
    Step By Step(C++模板解析)
    Step By Step(C++模板Trait)
    Step By Step(C++模板基本技巧)
    离职引发的诸多感触
    Step By Step(C++模板函数)
  • 原文地址:https://www.cnblogs.com/gojava/p/3523875.html
Copyright © 2011-2022 走看看