菜鸟学JAVA之——包、访问控制符
一、包 package
Java对创建在工程中的类按照包的概念来管理
包名命名规则:
-
一般将域名反转过来作为包名的一部分,没有自己域名就用自己名字或者特征创建一个 。
eg: package edu.yau.test
-
package放在有效代码行的第一行
同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。
有两个名字相同类:Car,分别在不同包中,如果要在本包中调用另一个包中的Car类,则必须使用全类名,如下
每次都要写全类名太麻烦,所以需要用import导入zaq包中的类Car
但这时本类就需要使用全类名,要不然就不知道到底是那个包中的Car类了
二、访问控制符
访问控制符可以修饰类,属性,方法
-
任何人都可以看见的叫公开属性,任何人都可以调用的叫公开方法
-
任何人都不可以看见的叫私有属性,任何人都不可以调用的叫私有方法
私有的属性或方法只能自己调用,但是有些场景可以把原本私有的方法变成对某些人公开。比如,我结婚了,我就把我的所以收入,私房钱对我媳妇公开了。同样你不能指挥我洗碗,但是我媳妇可以。
public:在任意其他类中的任意位置,都可以(访问或者调用)被public修饰的属性或者方法
private:只能在本类中调用的属性
package:在不加入任何的访问控制符的时候Java会默认的加一个访问控制符:package,但不允许人为的加,不加的话Java就默认此方法或属性在同包中可以访问,不同包中不能访问
主类必须是public的,但内部类可以是private的。
构造方法也可以别访问控制符修饰,但最好是public的。
三、题外话
讨论Java中对象和内存之间的关系,理解static为什么可以不创建对象就可以被调用,以及后续继承的相关知识
Java的内存分为五个部分(Java的内存是在JVM上分的):
程序计数器:不起到任何存储数据的作用,只记录现在的代码执行到多少行了
栈:栈中放的都是对对象的地址引用(内存的物理地址)(每个线程都有一个栈)
堆: 存放使用new创建的对象,全局变量 (所有线程共用一个堆)
常量池
方法区
对象和内存之间的关系
c.price = 2000,c的price变为2000,但是a的price还是99
这是因为这些东西都是动态变量的特征,跟着对象走,改是按对象改的
b.price 报错,空指针异常
访问控制符与内存的联系
这些内容还不够完善,在后续学习过程中会继续加以补充修改