语法、包、权限修饰符
什么是包?
●包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护。
●建包的语法格式: package 公司域名倒写.技术名称。报名建议全部英文小写,且具备意义
●建包语句必须在第一-行,一般IDEA工具会帮助创建
package com. itheima . javabean;
public class Student {
}
导包
●相同包下的类互相之间可以直接访问,不同包下的类必须导包,才可以使用!导包格式: import 包名.类名;
package com.package2;
import com.package1.demo;
import com.package2.zibao.zibaolei;
public class Main {
public static void main(String[] args) {
zibaolei z =new zibaolei();
demo d=new demo();
System.out.println(z.getName()+" "+d.getGender());
}
}
package com.package2.zibao;
public class zibaolei {
public String getName() {
return name;
}
public zibaolei() {
}
public void setName(String name) {
this.name = name;
}
private String name ="兰华";
}
package com.package1;
public class demo {
private String gender ="女";
public demo() {
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
包结构:
运行结果:
兰华 女
配置IDEA自动导包
Files => settings => 搜索框查找”auto“ => Auto Import => Add unambiguous imprts on the fly
Add unambiguous imprts on the fly
的意思是你的鼠标一晃到未被导入包的类名上面时就会自动导入相应的包,甚至无需快捷键。(在自己尝试的时候发现甚至鼠标都不用晃,写完类名包就导进来了,相当方便!)
导包注意事项
不同包下如果有多个类使用了相同的名字,默认只会导入其中一个,如果想使用另一个类必须通过全名使用,注意是使用全名使用而不是导入,请看如下例子:
package com.package2;
import com.package1.demo;
import com.package2.zibao.zibaolei;
public class Main {
public static void main(String[] args) {
zibaolei z =new zibaolei();
demo d=new demo();
com.package2.zibao.demo aba = new com.package2.zibao.demo();
System.out.println(z.getName()+" "+d.getGender());
}
}
您可以看到第十行代码是相当冗杂的,因此我们建议在一个项目中尽量不要使用相同的类名。当然如果您喜欢命名相同,则可以使用全名访问。
权限修饰符
在学习权限修饰符之前请务必确保您了解过“包”的相关知识点,权限修饰符将在包的基础上展开学习。
什么是权限修饰符?
●权限修饰符:是用来控制一个成员能够被访问的范围。
●可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制。
权限修饰符的分类和具体作用范围:
●权限修饰符:有四种作用范围由小到大( private ->缺省-> protected - > public )
修饰符 | 被同一个类访问 | 被同一个包中其他类访问 | 被不同包下的子类访问 | 被不同包下的无关类访问 |
---|---|---|---|---|
private | ✔ | |||
缺省 | ✔ | ✔ | ||
protected | ✔ | ✔ | ✔ | |
public | ✔ | ✔ | ✔ | ✔ |
权限演示
-
同类访问:四种权限均支持访问
-
可以被同一个包中其他类访问的权限:缺省、protected、public
-
支持被不同包下的子类访问的权限:protected、public
protected是比较特殊的一个权限,也是很容易被误解的一个权限:
他的访问可以不同包,但是必须要求是子类,除此之外,访问protected修饰的变量或方法无须用new去声明一个对象,因为他靠的是继承实现的,即本身仿佛拥有了protected定义的内容。
正确的访问方式如下图:
- 同一项目下任意类均可访问:public
这个就不再图示了,都会。
学完权限修饰符需要具备如下能力
●能够识别别人定义的成员的访问范围。
●自己定义成员(方法,成员变量,构造器等)- -般需要满足如下要求:
… ■成员变量一般私有。
… ■方法一般公开。
… ■如果该成员只希望本类访问,使用private修饰。
… ■如果该成员只希望本类,同-个包下的其他类和子类访问,使用protected修饰。