这是我学习慕课网Java课程的笔记,原视频链接为:http://www.imooc.com/learn/124
面向对象三大特性:封装、继承、多态
2-1 什么是Java中的封装
★
概念
将类的某些信息 隐藏在类内部,不允许外部程序直接访问,而是通过
该类提供的方法
来实现
对隐藏信息的操作和访问。
★
好处
a.只能通过规定的
方法
访问数据
b.
隐藏
类的实例
细节,方便修改和实现
★
封装的实现步骤
2-2 使用 包 管理 Java 中的类
★
包的作用
a.管理Java文件
b.解决同名文件冲突
★
定义包:package 包名
注:必须放在Java源程序的第一行
包名间可以使用“ . ”号隔开(层次关系)
eg:com.immoc.MyClass
例如:音乐类——MyClassMusic
-music
com.imooc.music.MyClassMusic
-movie
com.imooc.movie.MyClassMusic
★
系统中的包
java.(功能).(类)
eg:
java.lang.(类) 包含java语言基础的类
java.util.(类) 包含java语言中各种工具类
java.io.(类) 包含输入、输出相关功能的类
★
包的使用
a. 可以通过
import关键字,在某个文件中使用其他文件中的类
import com.imooc.music.MyClass
b. Java中,
包的命名规范是全小写字母拼写
c. 使用的时候不但可以加载某个包下的所有文件
eg:com.imooc.*
其中 “ * ” 表示所有文件
也可以加载某个具体子包下的所有文件
eg:com.imooc.music.*
2-3 Java 中的访问修饰符
访问修饰符——可以修饰属性和方法的访问范围
★ 访问修饰符的总结
形象化类比系列图
图:类的属性和方法 —— 人的钱
图:private —— 锁在保险柜里,只有自己可以用
图:默认 —— 同一个屋檐下的人可以使用
图:protected —— 跟我有关系的也可以使用
图:public —— 所有人都可以使用
2-4 Java 中的 this 关键字
★ this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法
★ 封装对象的属性的时候,经常会使用 this 关键字
Eclipse提供了自动生成 getter 和 setter 的功能,步骤:
Step 1:点击Source,选择 Generate Getters and Setters
Step 2:选择要生成的方法,点击 确定
效果图:this关键字 避免了变量重名导致的混乱
2-5 什么是 Java 中的内部类
内部类(Inner Class)就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为
外部类。
★ 内部类的主要作用
a. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,
不允许同一个包中的其他类访问该类
b.
内部类的方法可以直接访问外部类的所有数据,包括私有的数据
c. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
★ 内部类的种类
成员内部类
静态内部类
方法内部类
匿名内部类
图:示例
2-6 Java 中的 成员内部类
内部类中最常见的就是成员内部类,也称为普通内部类。
我们来看如下代码:
运行结果为:
从上面的代码中我们可以看到,成员内部类的使用方法:
① Inner 类定义在 Outer类的内部,相当于 Outer类 的一个成员变量的位置
Inner类 可以使用任意访问控制符,如 public、protected、private等
② Inner 类中定义的 test() 方法可以直接访问 Outer类中的数据,而不受访问控制符的影响,如直接访问 Outer类中的私有属性 a
③ 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,
即:内部类 对象名 = 外部类对象.new 内部类();
④ 编译上面的程序后,会发现产生了两个 .class 文件
其中,第二个是外部类的 .class 文件,第一个是内部类的 .class文件,即成员内部的 .class 文件总是这样:外部类名$内部类名.class
另外,
① 外部类是不能直接使用内部类的成员和方法
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
图:修正版
②如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法。
如果要访问外部类的成员变量,可以使用 this 关键字。如:
运行结果:
我的进一步探究:
探究1:
编译器会报错:
探究2:
运行结果:
2-7 Java 中的 静态内部类
静态内部类是 static 修饰的内部类,这种内部类的特点是:
①
静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
②
如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
③ 创建静态内部类的对象时,不需要外部类的对象,可以直接创建
内部类 对象名 = new 内部类();
运行结果 :
我的进一步探究:
运行结果:
2-8 Java 中的 方法内部类
方法内部类 就是 内部类 定义在 外部类 的方法中,
方法内部类只在该方法的内部可见,即只在该方法内可以使用。
一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。