在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

abstract class Employee
{
private String name;
private String address;
private int number;
public Employee(String name, String address, int number)
{
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
public double computePay()
{
System.out.println("Inside Employee computePay");
return 0.0;
}
public void mailCheck()
{
System.out.println("Mailing a check to " + this.name
+ " " + this.address);
}
public String toString()
{
return name + " " + address + " " + number;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
public void setAddress(String newAddress)
{
address = newAddress;
}
public int getNumber()
{
return number;
}
} public class AbstractClass
{
public static void main(String [] args)
{
/* 以下是不允许的,会引发错误 */
Employee e = new Employee("George W.", "Houston, TX", 43); System.out.println("\n Call mailCheck using Employee reference--");
e.mailCheck();
}
}

如上面代码,抽象类不能直接实例化对象,不然会发生编译错误!

使用抽象类

通过一般的方法继承Employee类:

abstract class Employee
{
private String name;
private String address;
private int number;
public Employee(String name, String address, int number)
{
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
public double computePay()
{
System.out.println("Inside Employee computePay");
return 0.0;
}
public void mailCheck()
{
System.out.println("Mailing a check to " + this.name
+ " " + this.address);
}
public String toString()
{
return name + " " + address + " " + number;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
public void setAddress(String newAddress)
{
address = newAddress;
}
public int getNumber()
{
return number;
}
} class Salary extends Employee
{
private double salary; //Annual salary
public Salary(String name, String address, int number, double
salary)
{
super(name, address, number);
setSalary(salary);
System.out.println("Constructing a Salary");
}
public void mailCheck()
{
System.out.println("Within mailCheck of Salary class ");
System.out.println("Mailing check to " + getName()
+ " with salary " + salary);
}
public double getSalary()
{
return salary;
}
public void setSalary(double newSalary)
{
if(newSalary >= 0.0)
{
salary = newSalary;
}
}
public double computePay()
{
System.out.println("Computing salary pay for " + getName());
return salary/52;
}
} public class AbstractClass
{
public static void main(String [] args)
{
Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00); System.out.println("Call mailCheck using Salary reference --");
s.mailCheck(); System.out.println("\n Call mailCheck using Employee reference--");
e.mailCheck();
}
}

aaarticlea/png;base64,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" alt="" />

JAVA类与对象(十)-----抽象类的更多相关文章

  1. java类与对象基础--抽象类和接口

    在java的类体系中,有两个比较特殊的抽象体--抽象类和接口.抽象体并不可以拥有具体的对象(而且接口甚至不是类),但是它们却是在java设计领域非常重要的两个概念,很多优秀的设计模式都是基于这两个概念 ...

  2. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  3. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

  4. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  5. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  6. java类和对象

    类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...

  7. JAVA基础第三章-类与对象、抽象类、接口

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  8. 菜鸡的Java笔记 第十 - java 类与对象

    (局部变量需要初始化,全局变量不初始化系统也会帮忙初始化而局部变量系统不会帮忙初始化)>>>    2.1 类与对象基本概念        在现实生活之中,类指的就是具备某一共性的群 ...

  9. java类和对象的基础(笔记)

    在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...

随机推荐

  1. 【MySQL】frm文件解析

    官网说明:http://dev.mysql.com/doc/internals/en/frm-file-format.html frm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果出 ...

  2. linux 编译,链接和加载

    1.   序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措.索性化了一天多时间将<<程序员的自我修养—链接.装载与库>>中部分内容略读了一遍 ...

  3. README.md

    #gzq-h5app 本项目依赖于nodejs,请尽量安装最新版本. 需要先将Grunt命令行(CLI)安装到全局环境中.安装时可能需要使用sudo(针对OSX.*nix.BSD等系统中)权限或者作为 ...

  4. Windows server 2008 R2远程桌面终端连接数的破解

    Windows server 2008 R2远程桌面终端连接数的破解 日常工作中,经常需要远程连接到服务器上,然而在公司里,老总.同事都需要连接到服务器上,而默认的服务器系统同时连接的最大连接数只有2 ...

  5. Visual Studio 中 Tab 转换为空格的设置

    Visual Studio 中 Tab 转换为空格的设置 在 Visual Studio 中写代码时,按 Tab 键,会自动进行缩进.有时希望实现按 Tab 键,出现多个空格的效果.Visual St ...

  6. 判断文件夹下是否存在txt格式的文本文件

    判断D盘下是否存在txt类型的文件 string p_Path="D:\\"; bool IsHaveTxt() { DirectoryInfo foldinfo = new Di ...

  7. mariadb主从复制架构学习笔记

    复制功用: 数据分布 负载均衡:读操作,适用于读密集型的应用 备份 高可用和故障切换 MySQL升级测试 在从服务器上有两个线程: I/O线程:从master请求二进制日志信息,并保存至中继日志 SQ ...

  8. Java字符判断

    从键盘上输入一个字符串,遍历该字符串中的每个字符,若该字符为小写字母,则输出“此字符是小写字母”:若为大写字母,则输出“此字符为大写字母”:否则输出“此字符不是字母”. 代码入下: import ja ...

  9. 射击比赛 (POJ 1719) 题解

    [问题描述] 我们假设射击的目标是一个由R*C(2≤R≤C≤ 1000)个小方格组成的矩形网格.网格中每一列恰有2个白色的小方格和R-2个黑色的小方格.定义网格的行从顶至底编号为1~R,列从左至右编号 ...

  10. 一元三次方程 (codevs 1038)题解

    [问题描述] 有形如:ax3+bx2+cx+d=0这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...