JAVA学习笔记随记2(面向对象中级)
现在开始学习一些java面向对象中不太容易的东西了,加油吧!
(0^_^0)
首当其冲的便是包的感念和使用。
包
包的出现其实是为了更好的管理类,其本质就是一些文件夹和目录,同名的类不能同时出现,但如果两个同名的类在不同的包下则可以共存。相当于给每个类分配了一个地址,虽然类名是一样的,但地址绝对不同。
而包的出现也使得什么时候能够使用包里的内容,什么时候不能使用,这就涉及到了访问修饰符的知识。以及需要使用某个包里的内容应该怎么办之类的,这之后详说。
包的命名
只能包含数字,下划线,字母和圆点(.),不能包含关键字和保留字。
注意圆点隔开是不同的文件夹和目录,所以圆点隔开的每一层目录都必须遵守上述规则。
命名规范:一般是小写字母+圆点,要有具体含义。
打包和导包
引入包:我们引入包的目的是使用包中的类,所以有两种引入包的形式,
注意,同一个包中的类,不需要进行导包,只有包不同的类才需要导包。根据相对寻址,优先在本包中寻找类。所以同一个包中的类不需要导包。
第一种:
import 包名.类名
例如:import java.util.Scanner
第二种
import 包名.*
例如:import java.util
其中第一种是指定导入某个包中的某个类,第二种是将该包中的所有类都导入。
为了效率等因素,推荐第二种(idea中有自动导包的功能,所以直接用就行,不需要自己手动导包,想起了dev只用万能库....懒人是这样的。)
打包:打包的目的可以说是给该类分配一个地址,方便其他类的使用
语法如下:
package 包名
打包和导包有一些细节要求,打包指令必须是该java代码的第一条指令且只能有一个,而导包指令则须在类定义之前,可以有多个且无顺序要求。
对打包和导包进行一个小结吧,打包和导包都是在面向对象语言总避免类的重复和更好管理类而存在的,一个类可以没有不再任何一个包里,但这样其他类就不能使用和调用它,这也就失去了面向对象的价值了。一个类如果想调用非本包里的其他类的话,必须通过导包操作,将想要引用的类导入代码中才能使用。物以类聚,使用时各处借用,这也是面向对象的语言的魅力吧。
访问修饰符
早就接触到这个东西了,但一直不是那么理解,还有子类没有学习,等学习完子类,对这个知识点理解的应该也就能更深了。
首先最重要的就是这个图了。
感觉这个挺常考的,背的话,需要横着背和纵着背。
首先是各自顺序问题,访问修饰符从开放到限制依次是:public,protected,默认,private
对应的范围从开放到限制依次是:同类,同包,子类,不同包
这里可以简单思考下子类介于同包和不同包中间的缘由。(因为还没有开始学继承和子类,所以都是在瞎逼逼....)
子类应该是可以在不同包中继承的,即一个类的父类与当前类不同包,这样说明了子类的范围是要大于小于同包,但和纯粹的不同包又不同,因为毕竟子类也建立了一个新的关系。
两个交叉背的话,竖着背的话
public到不同包,或全部。
protected到子类。
默认到同包。
private到同类,或只有本身。
横着背的话这样:
同类的到private。
同包的话到默认。
子类的话到protected
不同包的话到public。
反复记,遇到一次,记一次,回想一次,总会记住的。
最后补充一个小细节:这四个访问修饰符都可以用来修饰属性,方法。
但用来修饰类的话,只有public和默认两种。