Java抽象类 小白版
什么是抽象
抽象就是从多个事物中将共性的,本质的内容抽象出来。
什么是抽象类
Java语言中,用abstract关键字修饰的类叫作抽象类。类本身是不存在的,所以抽象类无法创建对象无法实例化。
在面向对象领域,抽象类主要用来进行类型隐藏。
什么是抽象方法
抽象类中用关键字abstract修饰的方法叫做抽象方法(只有声明,没有方法体)
例:
public abstract class Car{ //抽象类
public abstract void start(); //抽象方法
}
抽象类的好处
可以复用代码
利用多态隐藏实现类类型,得到更高的灵活性
抽象类的特点
- 抽象类,其修饰符必须为public或者protected,不能是private,因为创建抽象类,就是要被其他类继承;
- 抽象类不能实例化对象,要通过其普通子类进行实例化;
- 普通类继承抽象类,则该普通类一定要重写父类的抽象方法;
- 即使不包括任何abstract方法,亦可将一个类声明成抽象类;
- 抽象类中可以没有抽象方法,但是,有抽象方法的类必须是抽象类。
抽象类和具体类的区别
抽象类只有方法的声明,没有方法体(具体实现),所以抽象类不能实例化对象;
具体类所有的方法包含方法的声明和方法体,所以具体类可以实例化对象。
实例
abstract class Door {
public int weight;
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public abstract void open();
public abstract void close();
}
class WoodenDoor extends Door{
public void open(){
System.out.println("Opening wooden door");
}
public void close(){
System.out.println("Closing wooden door");
}
}
class IronDoor extends Door{
public void open(){
System.out.println("Opening iron door");
}
public void close(){
System.out.println("Closing iron door");
}
}
public class Main{
public static void main(String[] args) {
Door door = new WoodenDoor();//向上类型转换(多态)
door.open();
door.close();
door.setWeight(10);
System.out.println(door.getWeight());
door = new IronDoor();
door.open();
door.close();
}
}
Java抽象类 小白版的更多相关文章
- 《Effective Java(中文第二版)》【PDF】下载
<Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...
- Java接口、Java抽象类、C++抽象类的区别
由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- 《Thinking In Java第四版》拾遗
<Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...
- Java 抽象类与接口总结
一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法 含有抽 ...
- Java实现简单版SVM
Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...
- JAVA抽象类和接口的深入探讨
Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...
- java抽象类和接口的区别(转载)
1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...
随机推荐
- Isolution
<template> <div style="float:left;width: 100%; margin-left: 0"> <el-row > ...
- linux中cp复制时处理软链接的两种方式
linux中cp复制时处理软链接的两种方式 cp -r -L 复制原始文件 cp -r -P 复制软链接本身
- 痞子衡嵌入式:浅聊恩智浦i.MXRT官方SDK里关于串行Flash相关的驱动与例程资源(上篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT官方SDK里关于串行Flash相关的驱动与例程资源. 经常有同事以及 i.MXRT 客户咨询痞子衡,咱们恩智浦官方 S ...
- 创业型公司和BAT大厂招聘要求有什么不同?
背景 很多Java初学都关心这么一个问题,Java学到什么程度以后可以找到第一份工作.大家的目标都很明确,也很实在,学习Java无非就是为了找工作,那到底我要学多少Java知识,才可以找到第一份工作呢 ...
- PLSQL 无法查询带中文的WHERE条件
今天遇到一个坑爹的问题,plsql无法查询带where条件的语句,是因为plsql中Oracle的客户端字符集和服务器上的不一样造成的,需要新增系统环境变量,特意记录下解决办法. 第一步:查询服务器上 ...
- yb课堂实战之订单和播放记录事务控制 《十六》
开启事务控制 启动类:@EnableTransactionManagement 业务类,或者业务方法@Transactional 默认事务的隔离级别和传播属性 启动类上加注解 Service层加注解
- 委托之Action与Func
1 例程代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 宇宙最强开发工具VScode快速搭建前后端分离环境【VUE+Springboot】
VS Code 的全称是 Visual Studio Code,是一款开源的.免费的.跨平台的.高性能的.轻量级的代码编辑器.它在性能.语言支持.开源社区方面,都做得很不错,是这两年非常热门的一款开发 ...
- 循环冗余检验CRC
先约定一个除数,除数根据生成多项式来决定,余数的位数就是除数位数减一,在被除数后面添加余数个0,然后进行运算. 注意虽然叫做除数被除数,但是是按位进行异或操作,相同为1,不同为0,最后的余数就叫帧检验 ...
- webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)
懒加载或者按需加载,是一种很好的优化网页或应用的方式.实际上是先把代码在一些逻辑断点处分离开,然后在一些代码块中完成某些操作后,立即引用或引用另外一些新的代码块.这样加快了应用的初始加载速度,减轻了它 ...