Java面向对象之抽象类abstract
抽象类abstract
普通类
- 普通类可以直接产生实例化对象,并且在普通类之中可以包含有构造方法,普通方法、static 方法、常量、变量的内容。
- 所有的普通方法都会有一个"{}",这个表示方法体,有方法体的方法一定可以被对象直接调用。
抽象类
指在普通类的结构里面增加抽象方法的组成部分。
拥有抽象方法的类一定属于抽象类,抽象类要使用abstract声明。
抽象类中的抽象方法没有方法体,声明时不需要加"{}",但是必须有abstract声明,否则在编译时将出现语法错误。
abstract修饰符可以用来修饰方法,也可以修饰类,如果修饰方法,那么方法就是抽象方法;如果修饰类,该类就是抽象类。
抽象类中可以没有抽象方法,但是有抽象方法的类,一定要声明为抽象类。
抽象类,不能使用new关键字类创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
子类继承抽象类,那么就必须要实现抽象类,没有实现的抽象方法,否则该子类也要声明为抽象类。
abstract class A{
public void fun(){//普通方法
System.out.println("存在有方法体的方法!");
}
//此方法并没有方法体的声明,并且存在有abstract关键字,表示抽象方法
public abstract void print();
}

#总结
- 抽象类继承子类里面会有明确的方法覆写要求,而普通类并没有。
- 抽象类只比普通类多了一些抽象方法的定义,其他的组成部分与普通类完全一样。
- 普通类对象可以直接实例化,但是抽象类的对象必须经过向上转型之后才可以得到实例化对象。
`虽然一个子类可以去继承任意一个普通类,但是从开发的实际要求来讲,普通类不要去继承另外一个普通类,而要继承抽象类。`
追随内心,步履不停。
Java面向对象之抽象类abstract的更多相关文章
- Java面向对象之抽象类abstract 入门实例
一.基础概念 抽象事物,是若没有具体的信息可以描述这个事物,这个事物可以称为抽象事物. 抽象类,是不断的向上抽取而来.抽取方法声明而不确定具体的方法内容.由不同的子类来完成具体的方法内容. (一)抽象 ...
- 浅谈Java面向对象之抽象类(abstract)
java语言,声明类时格式为: abstract class Db{} 说明Db类为抽象类.抽象方法是说没有方法的实现(方法体)此方法为抽象方法,只有抽象类和接口中才可以有抽象方法.简而言之,含有抽象 ...
- Java面向对象之抽象类
内容: 1.抽象类的产生 2.抽象类和抽象方法的定义与使用 3.抽象类和抽象方法的注意事项 4.实例分析 1.抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具 ...
- Java面向对象_抽象类、接口
一.抽象类 概 念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规 则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...
- Java中的抽象类abstract
abstract定义抽象类 abstract定义抽象方法,只需要声明,不需要实现 包含抽象方法的类是抽象类 抽象类中可以包含抽象方法,也可以包含普通方法 抽象类不能直接创建,可以定义父类引用变量指向子 ...
- Java面向对象_抽象类应用——模板方法模式
概念:定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤. 去个例子分析一下这个概念: public cla ...
- Java 面向对象编程 抽象类 抽象方法 abstract
抽象类 通过abstract定义的方法是抽象方法,它只有定义,没有实现.抽象方法定义了子类必须实现的接口规范: 定义了抽象方法的class必须被定义为抽象类,从抽象类继承的子类必须实现抽象方法: 如果 ...
- Java面向对象之抽象类,接口
抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的 ...
- java面向对象(下)-抽象类
抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...
- Java面向对象13——抽象类
抽象类 package oop.demon01.demon08; //abstract 抽象类: 类 extends: 类---单继承 (接口可以多继承) public abstract c ...
随机推荐
- FFmpeg 解码内存泄漏汇总,sws_getContext函数无法释放问题
使用FFmpeg库做的项目,调试项目的时候发现,连续解视频进行播放,会有明显内存增加问题.连续工作10个小时后就会 被linux 内核kill掉. 通过逐步注掉代码和网上查阅资料.最后发现内存泄漏有一 ...
- linux环境编程(2): 使用pipe完成进程间通信
1. 写在前面 linux系统内核为上层应用程序提供了多种进程间通信(IPC)的手段,适用于不同的场景,有些解决进程间数据传递的问题,另一些则解决进程间的同步问题.对于同样一种IPC机制,又有不同的A ...
- 【单片机】nRF52832 实现停止蓝牙广播接口
前言 有一个项目使用了 nRF52832 芯片作为主控,其中有用到蓝牙功能.在对蓝牙接口进一步封装的时候,发现 SDK 居然没有停止广播的接口,咨询了代理 FAE,对方也没有找到关闭广播的接口.后来通 ...
- 真正“搞”懂HTTP协议12之缓存代理
我们在前两篇的内容中分别学习了缓存和代理,大致了解了缓存有哪些头字段,代理是如何服务于服务器和客户端的,那么把两者结合起来,代理缓存,也就是说代理服务器也可以缓存,当客户端请求数据的时候,未必一定要追 ...
- IDEA插件:lombok
1 安装插件lombok File => Settings => Plugins => Marketplace.在 Marketplace 中搜索 lombok 并安装,安装成功后 ...
- Idea移除和删除模块
移除:右键模块-remove moduel 删除:在移除操作后 右键模块-delete 然后删除项目pom文件里面的<moduel>
- C# 编写Windows Service Windows服务程序
一.新建项目--选择Windows 服务,输入新的项目名称,点击确定. 二.服务名称的设置.服务添加安装程序.服务程序代码 1.服务名称的设置:视图 - 解决方案资源管理器 - 你创建的服务项目 默认 ...
- .NET List集合对比差异,Get,Post请求
1.键值排序 Dictionary<int, List<string>> dic = new Dictionary<int, List<string>> ...
- 使用vscode调试ros
https://blog.csdn.net/u012254599/article/details/106143540/ CMakeLists.txt set(CMAKE_BUILD_TYPE &quo ...
- 基于Vue3+TS的Monorepo前端项目架构设计与实现
写在前面 你好,我是前端程序员鼓励师岩家兴!去年在另一个项目https://juejin.cn/post/7121736546000044046中,我向读者朋友们介绍了结合npm包管理工具yarn作v ...