非零基础自学Java (老师:韩顺平)

✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】

第10章 面向对象编程(高级部分)

文章目录

  • 非零基础自学Java (老师:韩顺平)
  • 第10章 面向对象编程(高级部分)
    • 10.6 抽象类
      • 10.6.1 看个问题
      • 10.6.2 解决之道 —— 抽象类快速入门
      • 10.6.3 抽象类的介绍
      • 10.6.4 抽象类使用的注意事项和细节讨论
      • 10.6.5 抽象类使用的注意事项和细节讨论2

10.6 抽象类

10.6.1 看个问题

举个栗子

package com.dingjiaxiong.abstract_;/*** ClassName: Abstract01* date: 2022/9/3 19:57** @author DingJiaxiong*/public class Abstract01 {public static void main(String[] args) {}
}abstract class Animal{private String name;public Animal(String name) {this.name = name;}//所谓抽象方法就是没有实现的方法//> 当一个类中存在抽象方法时,需要将该类声明为 abstract//一般来说,抽象类会被继承,有其子类来实现抽象方法public abstract void eat();
}
10.6.2 解决之道 —— 抽象类快速入门

当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。

10.6.3 抽象类的介绍
  • 用abstract关键字来修饰一个类时,这个类就叫抽象类

    访问修饰符 abstract 类名{}
    
  • 用abstract关键字来修饰一个方法时,这个方法就是抽象方法。

    访问修饰符 abstract 返回类型 方法名(参数列表); //没有方法体
    
  • 抽象类的价值更多作用在于设计,设计者设计好后,交给子类去继承并实现抽象类

10.6.4 抽象类使用的注意事项和细节讨论
  • 抽象类不能实例化【继承】
  • 抽象类不一定要包含abstract方法,即抽象类可以没有abstract方法
  • 一旦类中包含了abstract方法,则这个类必须声明为abstract。
  • abstract只能修饰类和方法,不能修饰属性和其他的。
package com.dingjiaxiong.abstract_;/*** ClassName: AbstractDetail01* date: 2022/9/3 20:06** @author DingJiaxiong*/public class AbstractDetail01 {public static void main(String[] args) {//        new A();//抽象类不能被实例化}
}//抽象类可以没有abstract方法
abstract class A{public void hi(){System.out.println("hi");}
}//一旦类包含了abstract方法,则这个类必须声明为abstract
abstract class B{public abstract void hi();
}//abstract 只能修饰类和方法,不能修饰属性和其他
class C{//    public abstract int n1 = 1;
}
10.6.5 抽象类使用的注意事项和细节讨论2
  • 抽象类可以有任意成员【本质还是类】。
  • 抽象方法不能有主体,即不能进行实现【括号之后就分号】
  • 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。
  • 抽象方法不能使用private、final和static来修饰【这些关键字和重写相违背】

举个栗子

package com.dingjiaxiong.abstract_;/*** ClassName: AbstractDetail02* date: 2022/9/3 20:12** @author DingJiaxiong*/public class AbstractDetail02 {public static void main(String[] args) {System.out.println("Hello");}
}抽象方法不能使用 private、final 和 static 来修饰,因为这些关键字都是和重写相违背的
abstract class H{public abstract void hi(); //抽象方法
}///如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为 abstract类
abstract class E{public abstract void hi();
}abstract class F extends E{}class G extends E{@Overridepublic void hi() { //这里G就必须重写E中的方法}
}//抽象类的本质还是类,所以可以有类的各种成员
abstract class D{public int n1 = 10;public static String name = "韩老师666";public void hi(){System.out.println("Hi");}public abstract void hello();public static void ok(){System.out.println("Ok");}
}

非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.6 抽象类相关推荐

  1. 零基础自学java的难处_零基础自学Java 在学习中要注意哪些问题

    如果是零基础自学Java编程,在学习过程中有很多要注意的问题,想要学好学精必然是件难事,并且可能会走弯路浪费很多时间,短时间内是不可能学成参加工作的,想要成为专业的Java程序员并不容易,技术过硬尤为 ...

  2. 非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议

    非零基础自学Golang 文章目录 非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议 1.3.1 了解语言特性及自身需求 1.3.2 动手写代码 1.3. ...

  3. 零基础自学Java编程大概需要多久时间?

    零基础自学Java编程大概需要多久时间? 因人而异的. 那么我们怎么去学习才能更加高效呢? 如何快速打好Java基础? 01.准备 学习之路是一项很逆人性的差事,并不是每个人都能够坚持下来,尤其是打基 ...

  4. 非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.2 Go 语言特性及应用场景

    非零基础自学Golang 文章目录 非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.2 Go 语言特性及应用场景 第1章 走进Go 1.1 Go编程语言概述 1.1.2 ...

  5. 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器

    非零基础自学Golang 文章目录 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器 第18章 H ...

  6. 非零基础自学Golang 第3章 基本变量与类型 3.1 Go语言变量

    非零基础自学Golang 文章目录 非零基础自学Golang 第3章 基本变量与类型 3.1 Go语言变量 3.1.1 声明变量 3.1.2 初始化变量 3.1.3 变量值交换 3.1.4 匿名变量 ...

  7. 非零基础自学Golang 第15章 Go命令行工具 15.4 注释文档(doc)

    非零基础自学Golang 文章目录 非零基础自学Golang 第15章 Go命令行工具 15.4 注释文档(doc) 第15章 Go命令行工具 15.4 注释文档(doc) Go语言文档工具go do ...

  8. 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介

    非零基础自学Golang 文章目录 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介 第17章 HTTP编程(上) 17.3 ...

  9. 非零基础自学计算机操作系统 第1章 操作系统概述 习题一

    非零基础自学计算机操作系统 第1章 操作系统概述 习题一 [1]什么是操作系统?操作系统有哪些特性? 答:操作系统是管理计算机硬件与软件资源的计算机程序,它的主要特性有并发性.易用性.稳定性和异步性. ...

最新文章

  1. Android 微信支付步骤
  2. java两个日期之间的日期_获取两个日期之间的日期形成一个集合
  3. java中哪个是main函数的合法参数,Java试卷及答案
  4. linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
  5. 自己写cache server之网络框架处理——对比mysql、Oracle(上)
  6. quartus仿真22:优先编码器74148的级联(详细)
  7. 《疯狂的程序员》经典语录
  8. 神舟linux装win7教程,神舟战神G70装win7系统及bios设置教程(神舟G70台式机win10改win7)...
  9. Lua学习---编译生成lua和luac
  10. zktime 协议_Zktime8.0安装使用说明及常见故障分析
  11. 高一计算机教学总结怎么写,高一信息技术教学工作总结
  12. 记一次LiteIDE因为Delve版本太低无法Debug的处理
  13. 做了个小工具,可以一键导出所有微信表情包,有趣的表情包,不再只限一个APP使用,【微信表情包吸血鬼】
  14. 【数学史】大富翁的概率
  15. 29岁了还一事无成是人生的常态?
  16. Photoshop文字特效——炫彩效果文字
  17. H264解码之DDraw显示YUV
  18. macappstore登不上去_Mac系统打不开appstore如何解决
  19. 浏览器网站请求全解析
  20. 玩转STM32F0 Value Line Discovery 之 深入理解 SYSTICK定时器

热门文章

  1. scratch飞机大战
  2. 我的世界进服务器显示C1.8-1.11,我的世界坐标显示(Batty's Coordinates PLUS)Mod
  3. 7.1 MySQL视图和存储过程
  4. 北京科技大学 王志良老师物联网工作小组视频
  5. Ubuntu下好用的截图软件flame
  6. CentOS8 安装 MariaDB数据库
  7. ArchiCAD 24 Mac版3D建筑模型设计和分析软件新功能介绍
  8. 个人原创 响应式的境外旅游私人订制网站模板
  9. 念奴娇- 赤壁怀古- 苏轼(北宋)20140606
  10. 【IoT】基于MCU实现NB-IoT设备对接移动oneNET平台