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.抽象类可以没有抽象方法,有抽象方法的类必 ...
随机推荐
- C++深度解析教程学习笔记(6)对象的构造和销毁
1. 对象的初始化 (1)从程序设计的角度看,对象只是变量,因此: ①在栈上创建对象时,成员变量初始化为随机值 ②在堆上创建对象时,成员变量初始化为随机值 ③在静态存储区创建对象时,成员变量初始化为 ...
- C++深度解析教程学习笔记(5)面向对象
1. 面向对象基本概念 (1)面向对象的意义在于 ①将日常生活中习惯的思维方式引入程序设计中 ②将需求中的概念直观的映射到解决方案中 ③以模块为中心构建可复用的软件系统 ④提高软件产品的可维护性和可扩 ...
- sql server生成递归日期、连续数据
WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-2 ...
- linux下配置tomcat开机自启动
Linux下配置tomcat开机自启动 1.写一个tomcat脚本,内容如下,设置其权限为755,放在/etc/init.d/目录下 #!/bin/bash## /etc/init.d/tomca ...
- mysql免安装版1067错误终极解决办法|在windows平台下MySql启动时的1067错误的解决方法及反思
[windows事件查看] 我的电脑--此电脑--右键管理--计算机管理--系统工具--事件查看器--Windows日志--应用程序--找错误标志,如下图 [提示] 按部就班,可能并不能解决你的问题, ...
- 【FZU2280】Magic
题意 给出n个字符串,每个字符串有一个权值wi 有q个操作,操作有两种 1 x y 将字符串x的权值变为y 2 x 查询操作,输出以字符串x为后缀,且权值小于等于wx的字符串个数.其中n<=10 ...
- dataTable写入数据库(大数据写入)
例1: connectionStr,链接字符串dataTableName, 数据库中对应表名sourceDataTable DataTable 要写入数据库的DataTable字段要和表一致 publ ...
- apt-get update 时的问题 W:Failed to fetch gzip:/var/lib/apt/lists/partial...解决办法
http://askubuntu.com/questions/149454/upgrade-from-11-04-to-11-10-getting-wfailed-to-fetch-gzip 这个问题 ...
- 代理模式 静态代理、JDK动态代理、Cglib动态代理
1 代理模式 使用代理模式时必须让代理类和被代理类实现相同的接口: 客户端通过代理类对象来调用被代理对象方法时,代理类对象会将所有方法的调用分派到被代理对象上进行反射执行: 在分派的过程中还可以添加前 ...
- 10.Execution failed with exit status: 3
错误信息: insert overwrite table t_mobile_mid_use_p_tmp4_rcf select '201411' as month_id, a.prov_id, a.c ...