类和对象
重要问题
- Java中,哪些事情是编译期间做的?哪些事情是运行期间做的?
类和对象
对象可以想象成是一个鸡蛋,蛋黄是被包得比较好的数据,蛋清就是这个对象对外提供的服务。同时也体现了封装性
对象交互
希望每一个类和对象能尽量地独立。
思考问题:
对象只能new出来吗?能不能像数组那样编译期间就能确定?
访问属性
private:
- 只有这个类内部能够访问
- 类内部指定的成员函数和定义初始化
- 这个限制是对类的而不是对对象的
- 看是否有访问不该访问的东西,是从代码的层面上来看的,而不是从运行的层面上来看
- 同一个类的对象之间可以访问对方的私有成员
- 也就是说,访问权限只在编译时对编译器有效,在运行时,不存在访问权限这道栅栏。因为类只是一种类型,只会在编译器起作用。
为什么说private是对类的不是对对象的
这话到底是什么意思?private的访问属性到底限制的是什么?
public:
- 如果一个类是Public的,那么这个类能被任何人用来定义变量。
- 这个public类必须处于和这个类同名的源文件内,一个编译单元最多只能有一个Public类,没有访问修饰的类可以有任意个
- 如果成员前面没有访问修饰符,那和它位于同一个包的其它类都可以访问。
包
当你的程序越来越大的时候,你就会需要有一个机制帮助你管理一个工程中众多的类了。包就是Java的类库管理机制,它借助文件系统的目录来管理类库,一个包就是一个目录,一个包内的所有的类必须放在一个目录下,那个目录的名字必须是包的名字。
只要你用到的类不跟当前类在同一个包内,就需要import那个包中的那个类,不然的话在用的时候,就需要使用全类名
类变量
类变量也叫静态变量。
- static成员在类加载的时候初始化,和对象创建没有关系
类函数: - 只能调用static函数和访问static成员变量
为什么static函数中能new当前这个类的对象?