java中什么是抽象类(abstract)
一、什么是抽象类
由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);}@Overridepublic void getsalary() {System.out.println("会计发3000工资");}public void whoami() {super.whoami();// 显示调用父类的方法System.out.println("我是会计");} }
java中什么是抽象类(abstract)相关推荐
- Java中接口、抽象类与内部类学习
2019独角兽企业重金招聘Python工程师标准>>> Java中接口.抽象类与内部类学习 接口与内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类和抽象方法 抽象方 ...
- java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰...
1.abstract与static what abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用. static:用来声明静态方法,静 ...
- Java中多态、抽象类和接口
1.final关键字是最终的意思,可以修饰类.方法和变量. final修饰类不能被继承.修饰方法不能被重写.修饰变量是常量 例如: final class Father{}//final修饰类将不能被 ...
- Java 中接口和抽象类竟然有 7 点不同?
作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 本文已收录<Java常见面试题>系列:https://git ...
- Java中接口和抽象类的区别
这里说的都是在java8新特性之前的特点.因为在jdk1.7之前,接口是不允许定义方法体的,当然还有一些其他的特性,我这里就不一一列出了.我这篇文章还是说一哈jdk1.7之前的接口和抽象类的区别和联系 ...
- java中怎样调用抽象类中的非抽象方法?(对原文做修改,加入一点自己理解)
问: 例如:我有一个抽象类BaseStudentDAO,类中有一个非抽象方法load,我该怎样调用load这个方法? 答: 想调用BaseStudentDAO中的非抽象方法load,如果load方法是 ...
- JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码
抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...
- java中接口和抽象类的区别(保证你一看就懂)
先单独说一点,让你可以在朋友面前装逼:接口也能被继承,只不过是被接口继承 对比: 1.都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,不提供具体的实现(jdk1.8允许接口有一个default ...
- 探索 Java 中的 Date, Calendar, TimeZone 和Timestamp
探索 Java 中的 Date, Calendar, TimeZone 和Timestamp java 2010-12-31 08:56:49 阅读8 评论0 字号:大中小 订阅 对象 宋晟 (sh ...
- abstract的子类的错误表达JAVA_如果子类没有覆盖Java中的抽象方法,会发生什么?...
没有主体的方法称为抽象方法.它仅包含带有半冒号和前面的抽象关键字的方法签名.public abstract myMethod(); 要使用抽象方法,您需要通过扩展其类并为其提供实现来继承它. 包含0个 ...
最新文章
- Django 实现分库
- C#之while与do……while语句
- [Ubuntu] 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
- 白洁血战Node.js并发编程 01 状态机
- ecshop nginx php-fpm,ecshop在nginx下配置常见问题
- C/C++ 不可不知道的编程技巧!第一部分
- Sublime Text 3常用插件安装(持续更新)
- 让Fiddler调试localhost和127.0.0.1
- sql添加字段和字段说明
- Backtrader量化回测8——手续费
- 智能证件录入系统——电子护照阅读器
- 数加平台协助汇合营销快速行动,捕获转瞬即逝的商机。
- 一起搭建私有物联网云平台讲解
- vue 视频截图获取第一帧或者某一帧
- SpringBoot的ResultFul增删改查
- cc2530期末试卷_ZigBee期末试题.docx
- Latex 插入参考文献
- 前端与移动开发----微信小程序----小程序(四)
- 市场里的企业:一个人力资本与非人力资本的特别合约
- slotformatcombinations_用于确定无线通信系统中的时隙配置的方法和设备与流程
热门文章
- pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果
- oracle应用技术支持,oracle技术支持工程师岗位职责
- mysql怎么另存为_怎么把mysql中的数据库复制到另一台电脑的mysql上?
- solr mysql安装教程_Solr安装使用教程
- printline在C语言中的作用,iswprint - [ C语言中文开发手册 ] - 在线原生手册 - php中文网...
- 施密特正交化_夜思 | 为什么非实对称矩阵对应的特征向量不能施密特正交化?...
- Dell服务器如何重装操作系统 windows server
- 微信小程序云开发教程-云函数入门(2)-接收参数、前端调用
- 关于局部变量的几个难点
- html文本绘制,HTML5绘制实心的文本