目录
6.不同包下不用类之间继承的情况(主函数不在子类中,主函数单独一个类)
权限修饰符
一、权限修饰符有哪些?
public:公共的
protected:受保护的
默认不写
private:私有的
二、权限修饰符可以修饰哪些?
1.修饰类
权限修饰符修饰类时:只能用public和 默认不写,其他不可以
public class person{}
或者
class person{}
注意:如果使用public来修饰时,类名必须和文件名一致
2.修饰类中的成员
权限修饰符修饰类成员时:都可以使用
三.权限修饰符作用范围
1.相同的类中
private、protected、默认不写、private 权限修饰符都可以使用
textA类
package day04;
public class textA {
//测试public方法
public void textPublic() {
System.out.println("俺是A类public方法");
}
//测试protected方法
protected void textProtcted() {
System.out.println("俺是A类Protcted方法");
}
//测试默认的方法
void textMoren() {
System.out.println("俺是A类中默认方法");
}
//测试私有的方法
private void textPrivate() {
System.out.println("俺是A类中私有方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/*创建一个对象,验证是否在同一个类中可以调用
*public
*protected
*默认不写
*private这四个类
*/
textA t = new textA();
t.textPublic();//同一类可以使用
t.textProtcted();//同一类可以使用
t.textMoren();//同一类可以使用
t.textPrivate();//同一类可以使用
}
}
2.相同的包下不同的类
public、protected、默认不写可以使用
private不能使用
测试代码:
定义一个day04包,下面创建两个类,分别是textA和textB
1.textA类
package day04;
public class textA {
//测试public方法
public void textPublic() {
System.out.println("俺是A类public方法");
}
//测试protected方法
protected void textProtcted() {
System.out.println("俺是A类Protcted方法");
}
//测试默认的方法
void textMoren() {
System.out.println("俺是A类中默认方法");
}
//测试私有的方法
private void textPrivate() {
System.out.println("俺是A类中私有方法");
}
}
2.textB类
package day04;
/*
* 创建一个类与textB同包,看同包下不同类之间的权限修饰符的作用范围
*/
public class textB {
/*
* 将textA的主方法注释掉,在本类中进行测试
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*创建一个对象,验证是否在同一个包,不同类中可以调用
*public
*protected
*默认不写
*private这四个类
*/
textA t = new textA();
t.textPublic();//同一个包,不同类中可以调用
t.textProtcted();//同一个包,不同类中可以调用
t.textMoren();//同一个包,不同类中可以调用
//t.textPrivate(); private爆红,private只能在本类中直接调用,其他类调用不行
}
}
3.不同的包下不同的类之间
public可以
protected、默认不写、private不可以
注意:不同包调用方法。首先需要导包。
语法:import 包名.类名
如本案例中
测试代码:
再创建一个day04text包,里面创建一个TextMain类,用TextMain类去调用不同包下textA中的方法
TextMain类
package day04text;
import day04.textA;
public class TextMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
textA t = new textA();
//不同包不同类之间的调用
t.textPublic();//可以
// t.textProtcted();//不可以
// t.textMoren();//不可以
// t.textPrivate(); //不可以
}
}
4. 相同包不同类之间存在继承的情况
public、protected、默认不写 可以使用
private不可以
相当于:相同的包下不同的类这种情况
1.textA类
package day04;
public class textA {
//测试public方法
public void textPublic() {
System.out.println("俺是A类public方法");
}
//测试protected方法
protected void textProtcted() {
System.out.println("俺是A类Protcted方法");
}
//测试默认的方法
void textMoren() {
System.out.println("俺是A类中默认方法");
}
//测试私有的方法
private void textPrivate() {
System.out.println("俺是A类中私有方法");
}
}
2.textB类
package day04;
public class textB extends textA{
public static void main(String[] args) {
// TODO Auto-generated method stub
textA t = new textA();
t.textPublic();//可以
t.textProtcted();//可以
t.textMoren();//可以
//t.textPrivate(); //不可以
}
}
5.不同包下不用类之间继承的情况(主函数在子类中)
在day04text下创建一个textC,然后textC继承不同包下的textA方法
public、protected可以使用
默认不写、private不可以
textC类
package day04text;
//导包
import day04.textA;
public class textC extends textA{
public void text(){
public static void main(String[] args){
/*
* 不同包下去继承,只有public和protected修饰符可以使用
*/
this.textPublic();//可以
this.textProtcted();//可以
//this.textMoren();//不可以
//this.textPrivate();不可以
}
}
}
6.不同包下不用类之间继承的情况(主函数不在子类中,主函数单独一个类)
public可以使用
默认不写、protected、private不可以使用
主函数类
package day04text;
import day04.textA;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
textA t = new textA();
t.textPublic();//可以
//t.textProtcted();//不可以
//t.textMoren();//不可以
//t.textPrivate();//不可以
}
}
四、总结
权限修饰符 | 当前类 | 同一包 | 其他包子类 | 其他包类 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认不写 | √ | √ | ||
private | √ |