一、什么是抽象类

由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类。抽象的类无法进行实例化,因为他不是具体存在的类,或者说这样的类还不够完善,不能直接使用new关键字调用其构造器生成该类的对象。我们可以使用abstract定义一个抽象类和抽象方法,示例代码如下:

abstract class 类名

{

abstract int 方法名(int x,int y);

}

抽象的方法没有方法体。需要注意的是在抽象类中既可以有抽象方法,也可以有普通方法,注意抽象方法是没有方法体的(也就是方法后面是没有大括号的)。凡是继承这个抽象类的实体子类,都必须要实现这个抽象方法。

我们总结一下抽象类的特点:

(1)抽象类不能被实例化

(2)构造方法 和 static 方法不能是抽象的

(3)父类的抽象方法往往在子类中实现

(4)抽象类可以具有指向子类对象的对象引用

二、抽象类的例子

我们先来看看要完成的实际例子:

1、定义抽象类员工Employee,

(a)保护字段:姓名name,性别gender,年龄age等基本属性。

(b)定义抽象方法函数getsalary()表示领工资的操作

(c)定义普通函数whoami()输出 :我是+姓名

(d)拥有(姓名name,性别gender)参数的构造函数

定义一个经理类Manager 派生于员工;

(a)除了有员工等基本属性外,还有岗位级别 gree私有属性

(b)经理领7000元工资,打印并输出工资。

(c)重写父类的whoami(),调用父类的whoami()方法,再输出:我是一名经理。

定义一个会计类Accounting,派生于员工类;

(a)除了有员工等基本属性外,还有会计等级 rating私有属性

(b)会计领3000元工资,打印并输出工资。

(c)重写父类的whoami(),调用父类的whoami()方法,再输出:我是一名会计。

/**
* 定义类员工Employee,
*/
public abstract class Employee {
protected String name;
protected boolean gender;
protected int age;
public Employee(String name,boolean gender){
this.name=name;
this.gender=gender;
}
/**
* 表示领工资的操作
*/
public abstract void getsalary();
public void whoami(){
System.out.println("我是"+name);
}
}

我们新建一个经理类Manager,继承Employee类,这时候Eclipse就提示我们必须要重写抽象方法getsalary。示例代码如下:

/**
* 经理类
*/
public class Manager extends Employee{
private String gree; public Manager(String name,boolean gender){
super(name,gender);
}
//重写父类的抽象方法
public void getsalary(){
System.out.println("经理领7000元工资");
} public void whoami(){
super.whoami();//显示调用父类的方法
System.out.println("我是经理");
}
}

接下来是会计类。和上面的经理类差不多了。

/**
* 会计
*/
public class Accounting extends Employee {
private int rating;
public Accounting(String name, boolean gender) {
super(name, gender);
}
@Override
public void getsalary() {
System.out.println("会计发3000工资");
}
public void whoami() {
super.whoami();// 显示调用父类的方法
System.out.println("我是会计");
}
}

java中什么是抽象类(abstract)的更多相关文章

  1. Java中接口和抽象类的比較

    Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...

  2. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  3. Java中的继承抽象类和接口

    一.总结 1.使用extends关键字继承,eg: class Student extends Persion { ...}; 2.Java编程规范中类的首字母大写,方法的首字母小写单词首字母代谢,e ...

  4. 浅谈java中接口与抽象类之间的异同

    刚学习java的时候,总觉得接口和抽象类很像,但又说不上具体有什么区别.今天静下来,翻翻书,查查资料,做个小结.首先举两个例子,看看interface和abstract class 在“外形”上有啥异 ...

  5. Java中接口与抽象类的异同

    定义(以下是百度百科中的定义): Java接口:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具 ...

  6. java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰

    1.abstract与static what abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用. static:用来声明静态方法,静态方 ...

  7. Java中多态、抽象类和接口

    1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: ...

  8. JAVA中接口与抽象类

    抽象类总结 抽象类的概念:是使用关键字abstract修饰的类就是抽象类: 抽象类的产生:当多个不能相互继承的类具有相同的功能时,就需要将共同的信息向上抽取,放到公共的父类中:如果公共的父类只能描述所 ...

  9. Java 中接口和抽象类的 7 大区别!

    本文已收录<Java常见面试题>:https://gitee.com/mydb/interview ​ Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象.封装.继承和 ...

随机推荐

  1. Fundebug前端JavaScript插件更新至1.8.2,修复2个小BUG

    摘要: 修复2个BUG,请大家及时更新. Fundebug前端异常监控服务 Fundebug是专业的程序异常监控平台,我们JavaScript插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各 ...

  2. 华为企业级AS111-S,比较垃圾的地方

    今天换了一个华为企业级AS111-S 路由器,比较垃圾的地方: 1. 网页管理界面是https,却用一个无效的证书,chrome直接不能访问,IE可以访问,但第一次登陆改密码的时候就出错了. 然后怎么 ...

  3. springboot+thymeleaf 实现图片文件上传及回显

    1. 创建一个springboot工程, 在此就不多说了(目录结构). 2. 写一个HTML页面 <!DOCTYPE html> <html lang="en" ...

  4. IntelliJ idea SpringBoot打war包

    简单易用的使用idea 将SpringBoot工程打war包的方法 pom.xml中添加标签 1. 声明打包格式 <packaging>war</packaging> 2.  ...

  5. DF1协议简述

    DF1协议 1.    概述 可编程控制器(PLC)因编程方便,抗干扰能力强,被广泛应用于各种领域.DF1协议是AB公司可编程控制器系统广泛支持的数据链路层通信协议,各系列可编程控制器及装有RSLin ...

  6. CSP 201812-2 小明放学

    问题描述: 解题思路: 由于数据的量较大,需要使用long long来存储结果,否则会爆掉结果只能得到一部分的分 可以类比时钟,将红绿灯的变换当成时钟的运转,这样用模运算来断定红绿灯在到达时处于什么颜 ...

  7. python 操作目录

    每天写一点,总有一天我这条咸鱼能变得更咸 python 中对文件及目录的操作基本依赖与os,shutil模块,其中以os模块为主,最主要的几个方法实例如下: 1.判断文件/目录是否存在(os.path ...

  8. 26 配置TensorFlow 1.9

    https://www.ctolib.com/topics-133854.html sudo apt install libatlas-base-dev pip3 install tensorflow ...

  9. Visual Studio调试XSLT

    Visual Studio是一个很大的工具.很容易遗漏一些有用的特性.希望XSLT调试器不会错过.在下面,您可以看到调试器正在运行,因为xslt转换正在应用于某些XML.(请原谅我在示例中使用的毫无意 ...

  10. selenium--页面元素相关的操作

    获取元素的标签和元素大小 from selenium import webdriver import unittest class Test_BasicInfo(unittest.TestCase): ...