零基础学 Java
臧萌
PayPal 数据处理组技术负责人
46665 人已学习
新⼈⾸单¥68
课程目录
已完结/共 170 讲
第二章 Java面向对象编程 (74讲)
时长 07:13
时长 12:08
时长 06:26
时长 05:30
时长 14:16
时长 08:30
零基础学 Java
登录|注册
留言
12
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 52 | 成熟的类的对象要自己做事情
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 开发环境搭建(macOS)
04 | HelloWorld程序编译和运行(macOS)
05 | 开发环境搭建(Windows)
06 | HelloWorld程序编译和运行(Windows)
07 | 详解HelloWorld程序
08 | IntelliJ IDEA集成开发环境的安装和使用(macOS)
09 | IntelliJ IDEA集成开发环境的安装和使用(Windows)
10 | 从加减乘除到变量
11 | 再探计算加减乘除的程序
12 | Java中的基本数据类型
13 | Java中的运算符
14 | Java中的位运算符
15 | 基本数据类型的更多语法点
16 | 字符集编码和字符串
17 | 操作符和数据类型总结
18 | 程序执行流程之if-else语句(上)
19 | 程序执行流程之if-else语句(下)
20 | 程序循环之for语句
21 | 代码块和变量的作用域
22 | 程序循环之while语句
23 | 程序执行流程之switch语句
24 | 循环和判断的总结(上)
25 | 循环和判断的总结(下)
26 | 用数组保存成绩
27 | 认识变量和数组(上)
28 | 认识变量和数组(下)
29 | 多维数组
30 | 用数组灵活处理程序
31 | 类(class)
32 | 初探类和对象
33 | 认识引用类型(上)
34 | 认识引用类型(下)
35 | 类、对象和引用的关系
36 | 认识数组类型
37 | 引用的缺省值null
38 | 像自定义类型一样使用类
39 | Java中的包和访问修饰符(上)
40 | Java中的包和访问修饰符(下)
41 | 打造一个小超市
42 | IntelliJ调试程序初探
43 | 方法:让Merchandise对象有行为
44 | 返回值:让Merchandise计算毛利润
45 | 参数:让Merchandise计算多件商品的总价
46 | 参数和返回值是怎么传递的
47 | 分清参数、局部变量和实例的地盘
48 | 隐藏的this自引用
49 | 理解方法:一种特殊的代码块
50 | 理解方法的调用:代码的一种特殊跳转
51 | 给类和方法加Java注释
52 | 成熟的类的对象要自己做事情
53 | 方法的签名和重载
54 | 重载的参数匹配规则
55 | 构造方法:构造实例的方法
56 | 构造方法的重载和互相调用
57 | 静态变量
58 | 静态方法
59 | 静态方法的重载
60 | static代码块和static变量初始化
61 | 方法和属性的可见性修饰符
62 | 重新认识老朋友:Math和Scanner(上)
63 | 重新认识老朋友:Math和Scanner(下)
64 | 最熟悉的陌生人:String (上)
65 | 最熟悉的陌生人:String (下)
66 | 重新认识老朋友: main方法和System类
67 | String类的好兄弟
68 | 继承:方便让商品增加新的类别
69 | 子类对象里藏着一个父类对象
70 | 覆盖:子类想要一点不一样
71 | super:和父类对象沟通的桥梁
72 | super:调用父类的构造方法
73 | 父类和子类的引用赋值关系
74 | 多态:到底调用的哪个方法?(上)
75 | 多态:到底调用的哪个方法?(下)
76 | 多态里更多的语法点(上)
77 | 多态里更多的语法点(下)
78 | instanceof操作符
79 | 继承专属的访问控制:protected
80 | final修饰符(上)
81 | final修饰符(下)
82 | 继承里的静态方法
83 | 插曲:for循环的另一种写法
84 | 万类之祖:Object类
85 | hashCode和equals 方法(上)
86 | hashCode和equals 方法(下)
87 | toString方法
88 | 初探Class类
89 | 初探反射(上)
90 | 初探反射(下)
91 | 面向对象三要素:封装、继承和多态
92 | 枚举:定义商品的门类
93 | 接口:让商品类型更丰富(上)
94 | 接口:让商品类型更丰富(下)
95 | 抽象类:接口和类的混合体
96 | 有方法代码的接口
97 | 接口内代码的更多内容
98 | 静态内部类
99 | 成员内部类
100 | 局部内部类
101 | 匿名类
102 | 特殊类的总结
103 | 让我们的超市运转起来:设计篇
104 | 让我们的超市运转起来:代码篇
105 | 初识异常:try catch
106 | Java中异常的分类
107 | 抛出异常的语法
108 | Java异常的传递
109 | 自定义异常
110 | 异常传递不是凌波微步
111 | try catch finally语句
112 | 自动回收资源的try语句
113 | Java中的常见异常
114 | Collection类族简介
115 | Collection中的List (上)
116 | Collection中的List(下)
117 | Collection中的Set
118 | 泛型简析(上)
119 | 泛型简析(下)
120 | 再探泛型
121 | Iterator接口
122 | Map:key和value的映射
123 | 定义自己的注解
124 | Lambda V.S. 匿名类(上)
125 | Lambda V.S. 匿名类(下)
126 | 基本类型的自动装箱和拆箱
127 | Java中的File类
128 | Java I/O简介
129 | 写文件内容小程序
130 | 读文件内容小程序
131 | 网络通讯名词简介
132 | 简单的网络通讯小程序(上)
133 | 简单的网络通讯小程序(下)
134 | 简单的抓取网页内容的程序
135 | JDK和JRE
136 | 初识线程
137 | 创建自己的线程
138 | 再探线程
139 | 多线程:混乱开始了
140 | 同步控制之synchronized
141 | 同步控制之wait notify
142 | 多线程经典模型:生产者消费者
143 | 线程同步之join
144 | 死锁
145 | ThreadLocal线程专属的变量
146 | 定时任务
147 | volatile关键字的作用
148 | concurrent包基本原理
149 | concurrent包中的Atomic类族
150 | concurrent包中的锁
151 | concurrent包中的数据结构
152 | concurrent包中的线程池
153 | 聊天室开张喽 (上)
154 | 聊天室开张喽 (下)
155 | 什么是学习一门语言
156 | Java平台简介
157 | Maven概念简介
158 | Maven的安装和配置
159 | 创建一个简单的Maven项目
160 | 一个从pptx文件中抽取文字的小工具
161 | Maven常用命令和插件
162 | Intellij更多功能介绍
163 | 值得学习的类库简介
164 | 如何在Stack Overflow上提问才不会被骂
165 | 浅谈程序设计
166 | 游戏小程序功能定义
167 | 游戏小程序设计和模块划分
168 | 游戏小程序代码分析
169 | 使用Swagger创建一个Spring Boot的Web服务
170 | 结课测试&结束语
本节摘要

PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava

登录 后留言

全部留言(12)

  • 最新
  • 精选
小学生六年级
这个 bean 起名有什么特殊含义涞源吗,老师能稍微解释下么?网上搜了一下,咋说的都有。

作者回复: 既然网上已经有这么多了,我也来胡诌一个,哈哈哈哈哈哈 每种语言都喜欢找一些和自己语言名字相关的周边单词,来作为语言里的一些概念的名字。 比如说 Java 中出镜率颇高的 bean 这个概念。Bean 是豆子的意思。Java 呢,原本是爪哇岛的意思,盛产咖啡豆。所以 coffee bean 就和 Java 有了联系。Bean 也就跟 Java产生了关系。 用我们现在的话说,这就是梗。get到了,会心一笑,get不到,基本影响交流。 现在这个梗就更有意思了。爪哇岛盛产 coffee bean。Java 语言现在盛产 spring bean。 当然 bean 最开始和 Java 语言联系在一起,是一个叫做 Java Bean 的东西。 Java Bean 是一个约定俗成的规范,并非是一个语法层面的东西。简要来说,一个 Java Bean 是一个 public 的 class,它里面的成员变量都是 private 的,而且为每个成员变量提供get/set等方法。 基于这个标准,Sun 公司搞出了EJB,也就是Enterprise Java Bean。这个概念已经凉凉了,不用再费脑细胞学习它是什么了。 接过 EJB 的市场的,是我们现在耳熟能详的 Spring。早在 EJB 发际不久,Spring 就以更简单更好用的 Bean 来和 EJB 刚。一个是 Sun,Java 的主要控制者,一个是第三方。看来实力悬殊的比赛,最后还是 Spring 赢了,而且完胜。后来 Java 主动拥抱 Spring,将依赖反转等 Spring 首创的相关概念的注解也加入到了 Java 中。 这也从另一个侧面证明了 Java 是一个相对公平和开放的平台。说到这里就多说一句。作为微软对标 Java 生态系统的平台,.net 再号称自己有技术优势(当然我并不这么觉得,大家都是现代语言,谁也不比谁高多少),它也只能跑在 Windows + IIS 上。那就是微软一家独大,除非大家没得选,否则一个封闭的平台,再优秀也无法培育出一个充满活力的生态系统。当然现在微软开始拥抱开源,拥抱 Linux。但是我还是觉得,以后能跟 Java 抢市场的,不会是 .net 平台。即便是大如微软,大如 Google,生态系统也不是想建立就能建立的。 说回到 bean。Spring 既然一开始对标的是 EJB,也很自然的把自己系统里的东西叫做 bean。但是它并不像 Sun 那样搞这么复杂,就简简单单的一个词:bean。现在我们习惯叫它 spring bean。 https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/02%E7%AB%A0-Bean%E8%BF%99%E4%B8%AA%E5%90%8D%E5%AD%97%E6%80%8E%E4%B9%88%E6%9D%A5%E7%9A%84.md

2019-08-04
23
江杰
一脸汗最后?

作者回复: 因为不能开空调,会有比较大的风声和噪音囧

2019-07-14
15
东方未晞
虽然init方法给成员变量赋值时可以排除错误情况,但是赋值完,还是可以通过 对象名.成员变量 = 值 来更改,这时候还是可以赋予一个错误值,这该怎么办?

作者回复: 好问题。后面会讲访问控制符,使用成员变量的标准动作是: 1)将所有成员变量声明为private的,这样就不允许本类代码之外的代码更改成员变量的值了 2)提供public的方法,更改成员变量的值。外部代码可以通过调用对象的public方法,间接更改这个对象的成员变量值。方法代码里增加对成员变量值的合法性检查。

2020-01-08
8
订阅数超5000啦,听老师讲课就是一种享受,亲和有力!

作者回复: 不容易不容易😁,谢谢大家的支持~

2020-06-26
5
pythonbug
超级希望老师能出一期Springboot的,从入门到实战

作者回复: 极客时间有好多Spring的课程,都很不错哒。不能只逮住一个人撸,每个人的能力都是有限的,哈哈。

2020-02-10
5
因为热爱
哇,老师换衣服啦

作者回复: 哈哈,表激动,又不是换女装。

2020-10-03
3
Geek_3b9346
私有化成员变量,然后通过get/set方法操作值;public成员变量,然后 类.成员变量 操作值。这两类我还是感觉不到什么区别(get/set有什么好处),平时写代码get/set方法也并没有进行值的校验,那么再写get/set是不是多余呢?

作者回复: 很多框架是依赖于方法/反射来做切面或者代码注入的,直接将属性设置为public,会有后患。 方法还有很多别的功能,比如使用synchronized修饰,可以控制同步访问等。 大多数get/set确实是多余,但是正所谓有备无患。养成一个好习惯,凡属性,都走这个套路就行。 约定俗成的好处就是不用思考,直接来。

2020-02-11
3
朱家华
好处在于: 1.其他类只是调用本类提供的方法去操作本类的属性。其他类不能直接操作类的属性。那么对于本类内部属性的访问和计算逻辑就统统都聚集在本类自己的方法中。这就实现了代码的高内聚,即对本类数据的操作,不会出现在外部类。而外部类与本类的联系仅仅是本类提供的public方法。只要方法的名字不变,参数不变,返回值不变。那么如果需求发生变动,我们完全可以修改本类提供方法的方法体,而外部的调用方不会受到任何影响。这样的代码就易维护。即,即使因需求变更,我们只用修改本类方法的方法体即可,外部调用者不受影响。 2.本类对象的数据完全受到本类的管控,我们在本类访问和操作数据的方法中,可以对参数进行判断,可以对计算逻辑进行限制,保证数据的处理逻辑合理安全。比如成员变量是double类型的soldPrice,从这个角度来讲,其可以是负数,但从现实意义讲,哪有售价是负数的。在本类方法中,我们可以加入这些逻辑,如果soldPrice要设置为负数,就不再执行该逻辑。这样也保护了本类的数据。

作者回复: 理解完全到位。 程序说白了就是数据结构+算法。而对于绝大部分业务代码来说,其实就是数据+逻辑。把数据和操作数据的逻辑都封装在一个类里,就是每个类各司其职。拒绝你中有我,我中有你。

2020-12-17
2
2
纽扣很忙
老师上课真的是有意思,跟着学习很有意思。

作者回复: 必须的,学习期间没有正反馈,如果再没意思,那让人怎么坚持💪

2020-06-28
1
let_me_go
老师讲得真好,生动形象

作者回复: 哈哈,使劲夸我别怕我骄傲

2020-01-21
1
收起评论