Java超详细讲解抽象类的原理与用法
目录
- 1. 抽象类是什么
- 2 抽象类的语法
- 3 抽象类都有什么特性
- 4 抽象类是干什么的
1. 抽象类是什么
️给大家上一篇小作文,看完这个,你就理解了什么叫做抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
️思考一下抽象类和类在功能上什么区别
因为抽象类是没有足够的信息去描绘一个具体的对象的,所以抽象类也就不能实例化对象
除此之外,抽象类的其它功能都是存在的,成员变量,成员方法,构造方法的访问方法和类一样。
️既然这个抽象不能实例化对象,那么该如何使用抽象类呢
既然不能实例化对象,那么抽象类就只能被继承,才可以使用。
但是使用时,又要注意,因为继承,父类是抽象的,所以父类包含子类集合的常见方法不能使用
一句话说明抽象类,那就是,不完整的类,只能继承用
2 抽象类的语法
(1)使用abstract修饰的方法,叫抽象方法
(2)包含抽象方法的类,必须设计为抽象类,这个类也必须使用abstarct修饰
这个方法没有具体实现,又有abstract修饰,那么把这个方法叫抽象方法
abstract class Shape { //抽象方法 public abstract void draw(); }
3 抽象类都有什么特性
(1)抽象类是不能进行实例化的
看这段代码就报错了
(2)抽象类中,可以有和普通类一样的成员变量,成员方法,也可以有构造方法
抽象类和普通类不一样的是,抽象类不能进行实例化
(3)抽象类不可以被实例化,但可以被继承
可以这么认为,抽象类的作用是,用来被继承的
(4)抽象方法的访问限定符不能是private,并且抽象方法也不能
被static和final所修饰,这是因为子类继承要重写
注意:抽象方法没有加访问限定符时,默认是public
(5)当一个普通类继承这个抽象类之后,如果这个抽象类中包含抽象方法,
那么需要重写这个抽象方法,否则代码会报错
(6)如果一个抽象类️A继承另一个抽象类B,
那么此时这个抽象类A可以不重写抽象类B中的抽象方法
我们先看这个,一个抽象方法,重写一次
那再写一个抽象方法,会不会报错?答案是会报错
所以我们需要再重写一次,继承这里才不会报错
️但这个每写一个抽象方法,就要重写一次,是不是比较麻烦,有什么好的方法吗?
那就可以把继承这里也写成抽象类。
写成抽象类后,就不用一次一次重写那么麻烦了
abstract class Shape { public int a; public static int b; public void func() { } //抽象方法 public abstract void draw(); public abstract void draw2(); abstract class Rect extends Shape{ } }
所以,两个都是抽象类后,就不用重写就可以继承了
(7)抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
4 抽象类是干什么的
比较通俗的说就是,抽象类是给程序员用来,防止出错的,相当于报警器。
️为什么会这么说呢
比如这个不应该由父类完成, 而应由子类完成. 此时如果不小心用成父类了,
使用普通类编译器是不会报错的.
但是父类是抽象类就会在实例化的时候提示错误, 让我们发现错误,进行修改
所以说在合适的地方选用抽象类是比较有意义的
到此这篇关于Java超详细讲解抽象类的原理与用法的文章就介绍到这了,更多相关Java抽象类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Java基础巩固抽象类与接口详解
目录 1.抽象类 1.1.什么是抽象类 1.2.抽象类的用法 1.3.抽象类特点(限制条件) 2.接口 2.1.什么是接口 2.2.接口的用法 2.3.如何使用接口 2.4.接口的特点(限制条件) 2.5.如何实现多个接口 2.6.接口于接口之间的继承关系 2.7.如何使用接口 抽象类与接口 1.抽象类 1.1.什么是抽象类 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 1.2.抽象类的用法 一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract
-
Java抽象类和接口使用梳理
目录 抽象类 抽象方法 抽象类三大原则 接口 接口使用原则 JDK两大内置接口 java.lang.Comparable 比较接口 java.lang.Cloneable 克隆接口 对象的深浅拷贝 抽象类和接口的区别 抽象类 什么是抽象类呢?在现实生活中,我们说“人类”,我们无法对应到具体某个人,同样的,“动物类”.“图形类”这些无法映射到具体的对象的类就是抽象类. 抽象类是普通类的超集,意思就是普通类有的抽象类也有,只是它比普通类多了一些抽象方法而已.这些抽象方法可以有一个,也可以有多个. 它
-
一起来了解Java的态和抽象类
目录 多态: 抽象类: 总结 多态: 我们知道Java的三大特性:封装.继承.多态.前两个之前在Java入门(六)已经讲到,现在来讲多态这个特性. 什么是多态? 多态顾名思义即为多种形态的意思 Java中多态的含义: 1.发送消息给某个对象,让这个对象自行决定采用哪种行为响应这个消息 2.子类对象的引用赋值给父类引用变量来实现动态的方法调用 Java中形成多态的前提: 1.继承 2.父类方法的重写 3.向上转型 我对多态的解释: 比如我们,是人,也是学生,也是年轻人,我可以用人的身份去做事情,也
-
Java超详细分析抽象类和接口的使用
目录 什么是抽象类 抽象类语法 总结抽象类: 接口 怎么定义接口 接口间的继承 几个重要的接口 接口comparable comparator接口-比较器 cloneable接口深入理解深拷贝与浅拷贝 怎么使用cloneable接口 浅拷贝: 深拷贝 什么是抽象类 什么是抽象类呢?抽象类顾名思义就是很抽象,就是当我们没有足够的信息去描述这个类的时候我们就可以先不用描述,这样的类就是抽象类. 用代码举个例子: class Shape { public void draw() { System.ou
-
Java零基础也看得懂的单例模式与final及抽象类和接口详解
目录 1.单例模式 1.饿汉式和懒汉式的实现 2.饿汉式 3.懒汉式 4.懒汉式和饿汉式的区别 2.final的使用 1.基本介绍 2.使用场景 3.使用注意事项和细节讨论 3.抽象类 1.基本介绍 2.使用注意事项和细节讨论 4.接口 1.基本介绍 2.注意事项和细节讨论 3.实现接口与继承的区别 4.接口与继承同时出现如何访问属性 5.接口的多态特性 1.单例模式 1.饿汉式和懒汉式的实现 步骤: 将构造器私有化 类的内部创建对象 向外暴露一个静态的公共方法 2.饿汉式 class Scho
-
Java超详细介绍抽象类与接口的使用
目录 1.抽象类的语法和特性 1.1语法 1.2特性 2.接口的语法和使用 2.1语法 2.2特性 1.抽象类的语法和特性 1.1语法 1.在Java中,一个类如果被abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体. // 抽象类:被abstract修饰的类 public abstract class Shape { // 抽象方法:被abstract修饰的方法,没有方法体 abstract public void draw()
-
一文搞懂Java中的抽象类和接口到底是什么
目录 什么是抽象类 抽象类在实现多态中的意义 接口是什么 通过接口实现多态
-
Java深入数据结构理解掌握抽象类与接口
目录 abstract abstract修饰方法 抽象类的匿名子类对象 final关键字 接口 接口相关规则 接口的特性 抽象类和接口的异同 内部类 总结 abstract abstract介绍:可以用于修饰:类(抽象类).方法(抽象方法) abstract修饰类: ①此类不能实例化(也就是不能创建这个类的对象) ②虽然自己不能实例化,但是子类会调用父类的构造器,所以抽象类中一定有构造器 abstract修饰方法 ①抽象方法只有方法的声明没有方法体,所在的类一定是抽象类.因为如果类不是抽象的,那
-
一文详解Java抽象类到底有多抽象
目录 抽象类 1.引出抽象类 2.认识抽象类 接口 1.抽象类和接口的区别 2.认识接口 3.具体实现 USB接口 接口表示能力 抽象类 1.引出抽象类 向上转型带来的最大的好处就是参数统一化,使用共同的父类引用,就可以接收所有的子类实例. 多态非常依赖方法覆写,但是子类可以选择性的覆写父类的方法,若需要强制要求子类覆写方法,就会用到抽象类其实显示生活中就有很多的抽象类,这些类都是概念化的,没法具体到某个实例,但是能描述这一类对象的共同属性和方法,比如人类,就没法具体到某一类人,世界上有很多类人
-
Java超详细讲解抽象类的原理与用法
目录 1. 抽象类是什么 2 抽象类的语法 3 抽象类都有什么特性 4 抽象类是干什么的 1. 抽象类是什么 ️给大家上一篇小作文,看完这个,你就理解了什么叫做抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. ️思考一下抽象类和类在功能上什么区别 因为抽象类是没有足够的信息去描绘一个具体的对象的,所以抽象类也就不能实例化对象 除此之外,抽象类的其它功能都是存在的,成员
-
Java 超详细讲解抽象类与接口的使用
目录 一.抽象类 1.抽象类的语法 2.抽象类的特性 3.抽象类的作用 二.接口 1.接口的概念 2.接口使用 3.接口特性 4.实现多个接口 5.接口间的继承 6.常用的接口 (1)Comparable接口 (2)Cloneable接口 三.Object类 一.抽象类 在Java中,如果一个类被abstract修饰称为抽象类,抽象类中被abstract修饰的方法称为抽象方法,抽象方法不用给出方法体. 1.抽象类的语法 //抽象类:被abstract修饰的类 public abstract cl
-
Java超详细讲解接口的实现与用法
目录 1.接口的定义 2.接口的实现 3.接口的引用 4.接口的继承 5.利用接口实现多重继承 1.接口的定义 接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是: 接口的所有数据成员都是静态的且必须初始化. 接口中的所有方法必须都是抽象方法,不能有一般的方法. [public] interface 接口名称 [extends 父接口名列表]{ [public] [static] [final]数据类型 成员变量名 = 常量; ... [public][
-
Java超详细讲解设计模式之一的工厂模式
目录 工厂模式 1.简单工厂 1.1结构 1.2实现 1.3优缺点 1.4扩展 2.工厂方法 2.1结构 2.2实现 2.3优缺点 3.抽象工厂 3.1结构 3.2实现 3.3优缺点 4.模式扩展 4.1实现 工厂模式 在Java应用程序中对象无处不在,这些对象都需要进行创建,如果创建的时候直接new对象,那么如果我们要更换对象,所有new对象的地方都需要进行更改.违背了软件设计原则中的开闭原则.如果我们使用工厂生产对象,只需要在工厂中关注对象的改变即可,达到了与对象解耦的目的,工厂模式最大的特
-
Java 超详细讲解字符流
目录 一.字符流的由来 二.编码表 字符集: Unicode字符集: UTF-8编码规则: 三.字符串中的编码解码问题 编码方法(IDEA): 解码方法(IDEA): 四.字符流的编码解码问题 四.字符流写数据的五种方法 五.字符流读数据的两种方法 一.字符流的由来 由于使用字节流操控中文时不是很方便,Java就提供了字符流来进行操控中文 实现原理:字节流+编码表 为什么用字节流进行复制带有中文的文本文件时没有问题? 因为底层操作会自动进行字节拼接成中文 怎样识别该字节是中文呢? 汉字在存储时,
-
Java 超详细讲解十大排序算法面试无忧
目录 排序算法的稳定性: 一.选择排序 二.冒泡排序 三.插入排序 四.希尔排序 五.堆排序 六.归并排序 七.快速排序 八.鸽巢排序 九.计数排序 十.基数排序 排序算法的稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,如果排序以后,保证这些记录的相对次序保持不变,即在原序列中,a[i]=a[j],且 a[i] 在 a[j] 之前,排序后保证 a[i] 仍在 a[j] 之前,则称这种排序算法是稳定的:否则称为不稳定的. 一.选择排序 每次从待排序的元素中选择最小的元素,依次
-
Java 超详细讲解设计模式之原型模式讲解
目录 传统方式 原型模式基本介绍 原型模式在spring框架中源码分析 深入讨论-浅讨论和深拷贝 原型模式的注意事项和细节 传统方式 克隆羊问题 现在有一只羊 tom,姓名为: tom,年龄为:1,颜色为:白色,请编写程序创建和 tom羊属性完全相同的10只羊. 传统方式解决克隆羊问题 思路分析(图解) 代码演示: public class Sheep { private String name; private int age; private String color; public She
-
Java 超详细讲解设计模式之中的抽象工厂模式
目录 抽象工厂模式 1.什么是抽象工厂 2.抽象工厂模式的优缺点 3.抽象工厂模式的结构与实现 4.抽象工厂方法模式代码实现 5.抽象工厂模式的应用场景 6.抽象工厂模式的扩展 抽象工厂模式 前面文章介绍的工厂方法模式中考虑的是一类产品的生产,比如案例中的百事可乐工厂只能生产百事可乐,可口可乐工厂只能生产可口可乐,也就是说:工厂方法模式只考虑生产同等级的产品. 1.什么是抽象工厂 在现实生活中许多工厂是综合型的工厂,能生产多种类)的产品,就拿案例里面的可乐来说,在节日的时候可能会有圣诞版的可乐,
-
Java 超详细讲解IO操作字节流与字符流
目录 IO操作 字节流 FileInputStream FileOutputStream 字节流读写案例 字符流 FileReader FileWriter 字节流与字符流的区别 IO操作 字节流 java.io.InputStream 输入流,主要是用来读取文件内容的. java.io.OutputStream 输出流,主要是用来将内容字节写入文件的. FileInputStream 该流用于从文件读取数据,它的对象可以用关键字 new 来创建. 有多种构造方法可用来创建对象. 可以使用字符串
-
Java 超详细讲解设计模式之中的建造者模式
目录 1.什么是建造者模式? 2.建造者模式的定义 3.建造者模式的优缺点 4.建造者模式的结构 5.建造者模式代码演示 6.建造者模式的应用场景 7.建造者模式和工厂模式的区别 1.什么是建造者模式? 我们知道在软件开发过程中有时需要创建一个很复杂的对象,通常由多个子部件按一定的步骤组合而成. 例如,比如我们在自己在组装一台计算机的时候,需要有 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘.鼠标等部件组装而成的.比如学校需要采购100台计算机,学校不可能自己把零件买过来自己组装,肯定是告
随机推荐
- JavaScript在XHTML中的用法详解
- Java IO流对象的序列化和反序列化实例详解
- perl命令行参数内建数组@ARGV浅析
- 详解C++循环创建多级目录及判断目录是否存在的方法
- PHP+Tidy-完美的XHTML纠错+过滤
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- JS实现往下不断流动网页背景的方法
- 浅谈Nodejs应用主文件index.js
- moneybookers的注册与激活
- C#数字图象处理之图像灰度化方法
- java web在高并发和分布式下实现订单号生成唯一的解决方案
- 详解IOS的Automatically Sign在设备上打包
- vue 动态修改a标签的样式的方法
- JavaScript动态加载重复绑定问题
- python list删除元素时要注意的坑点分享
- Spring Boot整合ElasticSearch实现多版本兼容的方法详解
- 对Python中DataFrame选择某列值为XX的行实例详解
- Django 在iframe里跳转顶层url的例子
- C语言中的指针以及二级指针代码详解
- 使用Python的SymPy库解决数学运算问题的方法