当前位置:  编程技术>java/j2ee

简单学习Java抽象类要点及实例

    来源: 互联网  发布时间:2014-11-01

    本文导语:  使用抽象类应该注意的几个要点: 包含一个或者多个抽象方法的类必须被声明为抽象类. 将类声明为抽象类,不一定含有抽象方法.通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.抽象类不可以被...

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

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

代码如下:

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


    
 
 

您可能感兴趣的文章:

  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 初学linux下的c有苦于找不到什么程序实例学习
  • python 基础学习第二弹 类属性和实例属性
  • java 正则表达式基础,实例学习资料收集大全 原创
  • java字符串切割实例学习(获取文件名)
  • 实例学习C#中Ref,Out的用法
  • SQL自连接(self join)实例学习
  • C# 泛型数组实例学习与总结
  • T-SQL常用游标函数实例学习
  • Cocos2d-x学习笔记之CCLayerColor层的使用实例
  • 实例学习C#中is与As运算符号的用法
  • C# 泛型类与泛型函数的实例学习
  • jquery easyui表单验证实例学习
  • c#反射实例学习
  • php 二维数组去重的实例学习
  • php取整函数用法实例学习
  • 实例学习mssql存储过程分析
  • C#入门学习笔记之事件和委托的实例
  • 学习C# Socket入门实例代码
  • c# listbox添加双击事件的实例学习
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • 用java做东西,除了学习java,最重要的还应该学习些什么东西?
  • 想要学习java不知道在win98下能不能学习java?????????????????
  • 想深入学习Java应该学习哪些东西
  • 各位大虾,能否给兄弟提供一些自己认为比较好的关于java学习的电子书刊的下载地址和关于java学习的心得体会?欢迎讨论
  • 学习java好 还是学习嵌入式开发好??
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??
  • 学习JSP编程的话,JAVA学到什么样的程度可以开始JSP的学习呢?
  • 我刚刚开始学习Java,请各位高手指点捷径,推荐几个学习Java的网站。谢谢。
  • 刚学习玩纯java语言,没学任何API,接下来该怎么学习?
  • 我准备学习Java,重点在J2EE,高分向大家讨教学习的思路和方法!!!
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 各位高手,我初学java,以前是学VB的,请介绍一下学习java的经验
  • 谁会JAVA让我们共同学习和讨论JAVA
  • 在下想学习Java,请教各位大侠,Java 有哪功能
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 学习Java是从基础知识开始学习好还是直接学习JBuilder好?
  • 学习JAVA,请推荐好的 JAVA站点!
  • 能否推荐几本学习Java的好教材呢?那一种Java的开发工具更好呢?
  • 我准备学习Java,如何配置Java环境?拜托各位英雄!!!
  • PHP介绍及学习网站推荐
  • 新手提问:学习c++同时也想学习unix和linux
  • 准备学习docker: docker version命令查看版本
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • HTML 学习总结及下一步学习教程推荐
  • 有最近开始学习Minix的吗?一起来学习吧
  • 学习Java是从基础知识开始学习好还是直接学习JBuilder好? iis7站长之家
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • juqery的python实现:pyquery学习使用教程
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习linux网络编程需要学习些内核知识吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3