Java (public ,protected,private)简单程序分析
2016-08-29 20:17
337 查看
publick可以同时修饰类和变量成员方法。如果用public修饰一个类名,如public class A{。。。}
,则表示该类可以被所有的其它类访问或引用,即其他类可以创建该类的实例,访问该类的所有可见成员变量,调用所有可见方法。
如果类成员(变量和方法)用public修饰,表示该类的成员不仅可以被其内部成员访问,而且可以被其它类直接访问,也就是说,外界可以直接存取共有数据和公有方法。
样例
结果:
x=3
x=10
分析:
类P1中的所有成员都定义为public类型,因此其中的变量x和方法set_x(),和show_x()都可以被另一个类Example直接访问。
protected主要用于修饰类成员,说明该成员是被保护成员,除了可以被该类自身访问外,还可以被该类的子类及该类在同一个包中的其它类访问。
样例
结果
x=3
x=10
分析:该样例演示的是在子类中访问父类中受保护的成员。SecondClass是FirstClass的子类,关键字extends表示它们之间是继承关系。由此列可以看出,子类可以直接访问父类中的被保护数据和方法。
private主要用于修饰类成员,表示该类成员只能被类自身访问,任何其它类(包括该类的子类)都无权修饰或引用。应该将不希望他人随意引用或修改的数据和方法设置为private,这将使得私有成员对其他类不可见,只有通过声明为public的方法才可以对这些私有数据进行访问,从而达到信息影藏和封装的目的。
样例
分析:类Date中3个成员变量都被定义为private类型,在本类中对它们的使用不受任何限制。但在另一个类DateUser中,访问其它类的私有成员是受限的,因此,mydate.day=21是错误的,但如果想对其中某个成员变量进行操作,可以通过类Date中的公有方法完成,如使用mydate.setDay(21)也可到达将day赋值21的目的。
提示:如果类成员前没有public,protected,private中的任何一个修饰符,则称它使用了默认(default)修饰符。这时,只有该类本身以及与该类在同一个包中的其他类才可以直接访问这些默认成员。
表格
private @
default @ @
protected @ @ @
public @ @ @ @
,则表示该类可以被所有的其它类访问或引用,即其他类可以创建该类的实例,访问该类的所有可见成员变量,调用所有可见方法。
如果类成员(变量和方法)用public修饰,表示该类的成员不仅可以被其内部成员访问,而且可以被其它类直接访问,也就是说,外界可以直接存取共有数据和公有方法。
样例
class P1 { public int x; public void set_x(int i){ x=i; } public void show_x(){ System.out.println("x="+x); } } class Example { public static void main(String args[]){ P1 Obj=new P1(); Obj.set_x(3); Obj.show_x(); Obj.x=10; System.out.println("x="+Obj.x); } }
结果:
x=3
x=10
分析:
类P1中的所有成员都定义为public类型,因此其中的变量x和方法set_x(),和show_x()都可以被另一个类Example直接访问。
protected主要用于修饰类成员,说明该成员是被保护成员,除了可以被该类自身访问外,还可以被该类的子类及该类在同一个包中的其它类访问。
样例
class FirstClass { protected int n=3; protected void show_n(){ System.out.println("n="+n); } } class SecondClass extends FirstClass{ public static void main(String args[]) { SecondClass abs=new SecondClass(); abs.show_n(); abs.n=10; abs.show_n(); } }
结果
x=3
x=10
分析:该样例演示的是在子类中访问父类中受保护的成员。SecondClass是FirstClass的子类,关键字extends表示它们之间是继承关系。由此列可以看出,子类可以直接访问父类中的被保护数据和方法。
private主要用于修饰类成员,表示该类成员只能被类自身访问,任何其它类(包括该类的子类)都无权修饰或引用。应该将不希望他人随意引用或修改的数据和方法设置为private,这将使得私有成员对其他类不可见,只有通过声明为public的方法才可以对这些私有数据进行访问,从而达到信息影藏和封装的目的。
样例
package Test; public class Date { private int day,month,year; public void tomorrow(){ day=day+1; } public void setDay(int d) { day=d; } } class DateUser{ public static void main(String args[]){ Date myDate=new Date(); // myDate.day=21;错误 // System.out.println("day="+myDate.day); myDate.setDay(21); } }
分析:类Date中3个成员变量都被定义为private类型,在本类中对它们的使用不受任何限制。但在另一个类DateUser中,访问其它类的私有成员是受限的,因此,mydate.day=21是错误的,但如果想对其中某个成员变量进行操作,可以通过类Date中的公有方法完成,如使用mydate.setDay(21)也可到达将day赋值21的目的。
提示:如果类成员前没有public,protected,private中的任何一个修饰符,则称它使用了默认(default)修饰符。这时,只有该类本身以及与该类在同一个包中的其他类才可以直接访问这些默认成员。
表格
同一个类 同一个包 不同包中的子类 不同包中的非子类
private @
default @ @
protected @ @ @
public @ @ @ @
相关文章推荐
- Java中访问权限修饰符public protected 缺省默认 private的用法总结
- Java面试系列【public、private、protected区别】-访问权限,基础篇
- 第2章 Java编程基础——FAQ2.03 用public. protected和private修饰方法有什么区别?
- java作用域public ,private ,protected ,friendly
- Java中的public、 protected、 default、 private
- java作用域public ,private ,protected 及不写时的区别
- java public & protected & friendly & private
- java作用域public ,private ,protected
- JAVA的public,private,protected访问权限
- java作用域public ,private ,protected 及不写时的区别
- (java)snmp 管理中心程序简单分析,欢迎拍砖
- 巧记Java访问控制描述符(Access Control Modifier)public, private, protected
- java作用域public ,private ,protected 及不写时的区别
- java中private, public,protected的区别
- Java中public、package、protected、private的访问权
- java程序简单的内存分析
- 继承及java作用域public ,private ,protected 及不写时的区别
- java手记---public,protected,private,default作用范围
- java基础之关键字二( package、 class、import )和( static、fina ) 和(public、protected、private)
- java作用域public ,private ,protected 及不写时的区别