java抽象类的属性_JAVA 抽象类
一、抽象类的概念
C extends B, B extends A 在继承过程中,形成了一个继承金字塔。位于金字塔底部的类越来越具体(强大),位于金字塔顶部的类越来越抽象(简单)。
例如:人类继承于(属于)动物类,鱼类继承于(属于)动物类。人类有睡觉(闭眼睡)的方法,鱼类有睡觉(睁眼睡)的方法。动物类也有睡觉的方法,但动物类是人类和鱼类的父类,因此形容动物类睡觉的方法过于抽象,不确定如何去形容,此时可以将动物类睡觉方法定义为抽象方法。
即,当一个类中的方法过于抽象时,不确定如何去实现,此时可以把该方法定义为抽象方法。
抽象方法所在的类过于抽象,称为抽象类(abstract class)。写法如下
public abstract class 类名{
}
二、抽象类的特性
[1]抽象类过于抽象,不能实例化(实例化后无语义)。
public abstract class Animal{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public Animal(){
}
public Animal(String name){
this.name = name;
}
public void sleep(){
}
}
[2]如果一个方法过于抽象,无法实现,则需要把该方法定义为抽象方法。写法如下
public abstract void sleep();
抽象方法一定位于抽象类中。
抽象方法没有方法体。
抽象类中的方法不一定都是抽象方法。
package cn.exercises01;
public abstract class Moto {
//定义子类中共有的属性
private String no;
private String brand;
//设置属性访问
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
//无参构造
public Moto() {
super();
}
//有参构造
public Moto(String no, String brand) {
super();
this.no = no;
this.brand = brand;
}
//抽象方法
public abstract int eachRates(int days);
}
[3]子类继承抽象类,一定要根据自身情况重写抽象类的抽象方法,除非子类也是抽象类。
package cn.exercises01;
import static cn.exercises01.CarType.*;
//定义子类Car继承于父类
public class Car extends Moto {
// 设置子类Car自己的属性
private String type;
// 设置访问属性
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
// 无参构造
public Car() {
super();
}
// 有参构造
public Car(String no, String brand, String type) {
super(no, brand);
this.type = type;
}
//继承抽象类,抽象方法重写
public int eachRates(int days) {
int money = 0;
String info = super.getBrand() + this.type;
if (info.equals(BUCK_GL8)) {
money = days * 600;
} else if (info.equals(BMW_550I)) {
money = days * 500;
} else if (info.equals(BUCK_ROAD)) {
money = days * 300;
}
return money;
}
}
三、重写和实现
重写(override):当子类继承父类的方法不能满足其自身的需要时,子类重写父类的同名方法。
实现(implement):子类继承抽象父类时,一定要重写父类的抽象方法,此时父类的抽象方法没有方法体,也即没有实现;子类一定重写父类的抽象方法也即实现了父类的抽象方法。
实现是一种特殊的重写。实现建立在重写的继承上
四、Final关键字
final 是一个java的关键字,用于修饰局部变量、属性、方法、类,表示最终的意思。
[1] final修饰类表示最终类,无法被继承。
[2] final修饰符方法,方法就不能被重写。
[3] final 修饰属性,经常和static搭配使用,形成静态常量。
[4] final修饰变量
final 修饰基本数据类型 ,表示a中的内容(值)不能被改变,
final int a = 10;
final 修饰引用数据类型,表示person中的内容(地址)不能被改变。
java抽象类的属性_JAVA 抽象类相关推荐
- java抽象类的属性_java抽象类详解
前言 在没讲抽象类之前 我们先来看看 final关键字 final 修饰符 可以修饰 类.属性.方法 修饰类时 表示该类不能被继承 其他特征 跟普通的类一样 修饰 属性时 表示 改属性不能改变 ...
- java 定义抽象变量_Java抽象类和抽象方法定义与用法实例详解
本文实例讲述了Java抽象类和抽象方法定义与用法.分享给大家供大家参考,具体如下: 一.Java抽象类 1.抽象类的说明 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都 ...
- java enum 定义属性_java enum(枚举)使用详解 + 总结
enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容: 8. 总结 ...
- 时间日期类JAVA包含地区属性_Java常用类 | 时间和日期类
开发中经常涉及到时间与日期,记录下Java中与时间和日期相关的API JDK8之前与时间日期相关的类 java.lang.System类 System类提供了一个公共的静态方法currentTimes ...
- java接口与抽象类的优缺点_java抽象类与接口的比较
l 语法: 抽象类: 1.如果一个类中有个方法时被声明为抽象方法,那么本类需要用abstract关键字声明: 2.抽象类的成员属性跟普通类没什么区别: 3.抽象类不能被直接实例化: 4.抽象类中的抽 ...
- java抽象类的实现_JAVA抽象类和抽象方法(abstract)
一.抽象(abstract)的使用 当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. 我们都知道,父类是将子类所共同拥有的属性和 ...
- java抽象类实现接口_Java——抽象类实现接口
在Java中,使用抽象类来实现接口,并不是毫无作用.相反,有时间有很大的作用. 当你只想实现接口中的个别方法(不是所有方法)时,你可以先写一个抽象类来实现该接口,并实现除了你想要的方法之外的所有方法( ...
- java抽象类和接口_Java抽象类和接口类
Java中接口和抽象类的区别是什么?什么时候用接口?什么时候用抽象类?抽象类和接口存在的意义是什么?能解决哪些编程问题? 1)类关键字修饰符: 抽象类使用abstract修饰,含有抽象方法(使用abs ...
- java遍历对象属性_java开发中遍历一个对象的所有属性并set值 缓存优化
今天技术之家陪你一起了解java开发中遍历一个对象的所有属性并set值 缓存优化: Java反射 1.创建缓存池,可以加快访问速度private static final Map> CACHE ...
- java动态添加属性_java – 动态添加对象的属性
你好: 在我们的应用程序中,我们从数据库中检索了一些数据,例如,表格中包含以下字符:id,name,age,address,email. 然后我们将根据客户获得一些这些属性. 如果客户端需要id,na ...
最新文章
- oracle10.2 迁移,实战:Oracle10.2.0.4异机迁移并升级到Oracle 11.2.0.4
- SAP UI5 初学者教程之五:视图控制器初探 试读版
- 在非容器(集群)环境下运行dapr
- python 精度损失_Python的浮点数损失精度问题
- (7)Xilinx PCIE 接口调试总结(学无止境)
- Mysql 使用sql语句快速复制表和数据
- 想学python买什么书好-学习 Python 用哪本书好?
- HTML5期末大作业:商城网站设计——小米商城官网首页(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码...
- 东风谷早苗 简单的水题
- 浏览器打开苏宁易购证书错误
- [ERROR] [MY-010457][Server]--initialize specified but....
- inspect的使用
- Android——最佳性能实战
- Unity 设置代理 下载资源
- html首页我的待办,我的待办.html
- 七年级上学期计算机测试题,七年级英语上学期期末测试题及答案
- ue4 飞机大战游戏开发日记
- 一文读懂MCU的技术原理、区别及发展历史
- 来测试下 2019 你一共写了多少行代码?
- Python中的GIL问题
热门文章
- Hotelling T2检验和多元方差分析
- navicat 1146错误
- pip install
- Linux下如何使用Vi编辑器
- itunes备份是整个手机备份吗_如何使用iTunes备份手机资料
- Linux清理磁盘空间常用命令
- cmor在matlab中,MATLAB小波变换指令及其功能介绍(超级有用)(最新整理)
- nnet3-compute计算chain前向传播概率矩阵(声学模型输出)
- HTML表格——使用CSS冻结行和列
- PyTorch实战 | 文本情感分类任务 | LSTM与LSTM+Attention | TextCNN