一、什么是抽象类

由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. linux软连接和硬链接(总结)

    参考博客: https://www.cnblogs.com/fengdejiyixx/p/10821820.html https://www.runoob.com/linux/linux-comm-l ...

  2. curl模拟多线程

    1.curl发送请求的请求的基本思路 打开会话 设置会话参数 发送请求 关闭句柄 2.curl单进程发送示例 <?php //请求链接 $arr = [ 'https://www.yahoo.c ...

  3. c语言基础之getopt()

    getopt() #include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); ...

  4. MySQL使用alter修改表的结构

    SQL语句     DLL        数据定义语言         create,drop     DML     数据操纵语言         insert,delete,select,upda ...

  5. MySQL基本库表管理

    基本管理指令 mysql登陆 第一种 [root@wei ~]# mysql -u root -p 第二种(带参输入) [root@wei ~]# mysql -uroot -proot 注意:每个命 ...

  6. 解决samba共享虚拟机第二块磁盘的难题

    linux下使用samba共享文件到window下已经实现过了   点此链接 但是共享时磁盘空间是有限的,如果空间使用完了该怎么处理呢?这是个头疼的问题,不知道samba支持不支持共享第二个文件夹,由 ...

  7. reactnative遇到的问题总结

    1.View中出现文本报错,View等标签中不能出现字符串文本,字符串文本需要包在Text中,遇到如下错误 下面是问题代码: let rightTitle = this.props.rightTitl ...

  8. redhat quay 集成镜像构建

    redhat quay 可以类似docker hub 那样进行镜像的构建,以下是一个学习,但是在测试中发现流程是可以通的,但是 quay 在对于dockerfile 内容处理上有bug,造成build ...

  9. 洛谷P2504 [HAOI2006]聪明的猴子题解

    题目 记录悲伤 已知猴子的数量以及猴子跳的最大距离 已知数的数量以及树的坐标 最小生成树 每两棵树之间的距离需要枚举来计算 算出最大值之后再与n只猴子进行比较记录答案 需要注意 在使用最小生成树的时候 ...

  10. 【CSP-S膜你考】不怕噩梦 (模拟)

    不怕噩梦 题面 蚊子最近经常做噩梦,然后就会被吓醒.这可不好.. 疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事. 如果那些事出现在她的梦里,就会害怕. 我们可以假定那个害怕的事其实是一 ...