Java面向对象之抽象类abstract 入门实例
一、基础概念
抽象事物,是若没有具体的信息可以描述这个事物,这个事物可以称为抽象事物。
抽象类,是不断的向上抽取而来。抽取方法声明而不确定具体的方法内容。由不同的子类来完成具体的方法内容。
(一)抽象类的特点:
1、抽象方法没有方法体,必须由抽象关键字abstract来修饰。
1、抽象方法一定是存在于抽象类中,必须有抽象关键字abstract来修饰。
2、抽象类不能实例化。不能用new关键字创建对象。
3、子类必须覆盖抽象类中的所有抽象方法后,才可以实例化。否则该子类还是一个抽象类。
(二)抽象类中可以有构造函数:
因为抽象类不能创建对象,所有抽象类中的构造函数是不能给抽象类的对象进行实例化。但是抽象类可以有子类,抽象类的构造函数可以子类的对象进行初始化。所有抽象类中可以有构造函数。
(三)抽象类和一般类的区别:
抽象类可以描述事物的属性和行为。描述事物的信息不具体,可以定义抽象方法,但不能进行实例化。
一般类可以描述事物的属性和行为。事物的信息是具体的,不可以定义抽象方法,但可以进行实例化。
(四)抽象类一定是个父类:
因为必须需要子类覆盖抽象方法后,才可以实例化。才能使用这些方法。
(五)抽象类中是可以不定义抽象方法的:
这时的抽象类的功能,仅仅是让该类不能创建对象。
(六)抽象关键字abstract和那些关键字不能共存的:
关键字final、关键字private、关键字static。
二、实例代码
要求:公司中有程序员和项目经理。程序员有姓名、工号和薪水。并为公司进行工作。项目经理除了有姓名、工号和薪水外还有奖金。也为公司进行工作。对给出的需求进行数据建模。
分析:
程序员:属性:姓名、工号、薪水
行为:工作
项目经理:属性:姓名、工号、薪水、奖金
行为:工作
两者不存在所属关系,但是有共性内容,可以向上抽取为雇员。
雇员:属性:姓名、工号、薪水
行为:工作
//抽象类 Employee
abstract class Employee
{
private String name;
private int id;
private double pay; public void setName(String name)
{
this.name = name;
}
public void setId(int id)
{
this.id = id;
}
public void setPay(double pay)
{
this.pay = pay;
} public String getName()
{
return name;
}
public int getId()
{
return id;
}
public double getPay()
{
return pay;
} Employee(String name,int id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
} //抽象方法 work
public abstract void work();
} //描述程序员继承抽象类 Employee
class Programmer extends Employee
{
Programmer(String name,int id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("name: "+this.getName()+" id: " +this.getId()+" pay: "+this.getPay() );
System.out.println("Programmer work ......");
} } //描述项目经理继承抽象类 Employee
class Manager extends Employee {
private double bonus; Manager(String name,int id,double pay,double bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("name: "+this.getName()+" id: " +this.getId()+" pay: "+this.getPay()+" bonus: " +bonus);
System.out.println("Manager work ......");
}
} class AbstractDemo
{
public static void main(String[] args)
{
Programmer a = new Programmer("xiaoming",001,5000.00);
a.work();
Manager m = new Manager("xiaohong",010,8000.00,600.00);
m.work();
}
}
三、代码执行

Java面向对象之抽象类abstract 入门实例的更多相关文章
- Java面向对象之接口interface 入门实例
一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...
- Java面向对象之继承extends 入门实例
一.基础概念 (一)继承的好处: 1.继承:提高了代码的复用性. 2.让类与类之间产生了关系,给多态这个特征提供了前提. (二)继承的种类: 1.单继承:一个类只能有一个父类. 2.多继承:一个类可以 ...
- Java面向对象之关键字final 入门实例
一.基础概念 1.关键字final可以修饰类.函数.变量. 2.关键字final修饰的类不可以被继承. 3.关键字final修饰的方法不可以被覆盖. 4.关键字final修饰的变量是一个常量,只能被赋 ...
- Java面向对象之关键字super 入门实例
一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...
- Java面向对象之关键字static 入门实例
一.基础概念 静态关键字 static 是成员修饰符,直接用于修饰成员. (一)特点: 1.被静态修饰的成果,可以直接被类名所调用. 2.静态成员优先于对象存在. 3.静态成员随着类的加载而加载.随着 ...
- Java面向对象之关键字this 入门实例
一.基础概念 1.关键字this是指:哪个对象调用this所在的函数.this就指向当前这个对象. 2.用法: (1).this关键字可以解决:构造函数私有化问题. 注意:构造函数只能被构造函数调用, ...
- 浅谈Java面向对象之抽象类(abstract)
java语言,声明类时格式为: abstract class Db{} 说明Db类为抽象类.抽象方法是说没有方法的实现(方法体)此方法为抽象方法,只有抽象类和接口中才可以有抽象方法.简而言之,含有抽象 ...
- Java面向对象之抽象类
内容: 1.抽象类的产生 2.抽象类和抽象方法的定义与使用 3.抽象类和抽象方法的注意事项 4.实例分析 1.抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具 ...
- Java面向对象_抽象类、接口
一.抽象类 概 念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规 则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...
随机推荐
- Lambda表达式中使用正则表达式
某语句如果不用正则表达式: string[] names = { "Tom", "Dick", "Harry", "Mary&qu ...
- 分布式系统CAP定理
分布式系统领域有个著名的CAP定理: C-数据一致性: A-服务可用性: P-服务对网络分区故障的容错性 这三个特性在任何分布式系统中不能同时满足,最多同时满足两个 ZooKeeper是个CP的,即任 ...
- ZigBee协议栈中AES加密算法
原文地址:ZigBee协议栈中AES加密算法作者:大浪淘沙 Z-stack对Zigbee2006提供了全面的支持,功能之强大,性能稳定.安全性高,说到安全性是我们今天的主题.CC2430硬件支持128 ...
- textarea标签提示录入剩余字数
textarea标签提示录入剩余字数 <textarea onkeydown="checkMaxInput(this,300)" onkeyup="checkMax ...
- C# 读取文件中的sql语句 创建数据库以及表结构
大概思路是: 读取文件 根据文件中行内容为GO 作为分割 一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...
- plsql中的执行体
在plsql中的sql windows窗口中,可以编写一段执行体来达到一定的目的,类似于写一段程序,可有逻辑判断. 大概的格式为 declare ----定义变量 begin ----- 执行体: e ...
- datetime 2017-10-21 10:09:02.560 转年月日的时间类型
sql语句时间转年月日格式: 适用于多种时间格式 select REPLACE(STUFF(CONVERT(char(10), REPLACE(CONVERT(varchar(10),'2017-1 ...
- (转)不定义JQuery插件,不要说会JQuery
原文地址:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#" ...
- Diameter协议摘要
---------选择同学整理文档 1. 协议概述 Diameter协议主要为应用程序提供认证.鉴权.计费框架,即AAA,并支持本地AAA和漫游场景下的AAA. 1.1. 特点介绍 以前的AAA ...
- android IntentService和ResultReceiver的异步处理
IntentService和ResultReceiver的异步处理 1.在下载手机上从网络下载东西的时候会用到AsyncTask来方便处理,这里可以在用IntentService和ResultRece ...