访问控制符
来源:互联网 发布:手机网络哪家好 编辑:程序博客网 时间:2024/06/05 02:37
访问控制符:
类的访问控制符有四种:
public private protected和默认(即变量或方法前不添加访问控制符)
在一个类的内部 所有成员可以相互访问,访问控制符是透明的;
访问控制符是针对外部访问而言的
在一个类的外部 通过 类对象名.私有成员名 的方式无法访问该对象中的私有成员,但可以访问保护成员和公有成员。
下面举一个例子
例1:
class asd1 {private int a, b, c; //2行// 设置三边长度public void setTriangle(int i, int j, int k) { //5行a = i;b = j;c = k;} //8行// 求周长public int zhouchang() {return (a + b + c);}// 求面积public double area() {double p = 1.0 * (a + b + c) / 2;return Math.sqrt(p * (p - a) * (p - b) * (p - c));}}public class asd {public static void main(String[] args) {asd1 t = new asd1();//t.a = 3; //31行//t.b = 4; //32行//t.c = 5; //33行t.setTriangle(3, 4, 5); //34行System.out.printf("三角形的面积是: %f\n", t.area());System.out.printf("三角形的周尝试: %d\n", t.zhouchang());}}
在命令行窗口下输出结果为:
给外部的变量赋值,可以使用想31、32、33行那样,也可以使用像5行到8行和34行那样,但是一般推荐使用后者,因为后者不会直接的改变变量的值,使得程序本身更加安全
在本程序中,因为第2行的三个变量是私有的,所以不可以进行像第31、32、33行那里那样给变量赋值,若要进行这样的赋值,需把2行的变量类型前边的private去掉
在这4个访问控制符中,一般public和private使用比较多,所以主要说这个
再举一个例子
例2;
class A{public int i = 10;private int j = 20;public void f(){i = j = 111;g();}private void g(){j = i = 222;f();}}public class asd{public static void main(String[] args){ A a = new A();a.i = 0; //24行//a.j = 0; //25行//a.f(); //26行//a.g(); //27行System.out.println("2014年5月15日09:41:44");}}
输出结果为:
2014年5月15日09:41:44
本程序的结果并没有什么实际意义,下面将会通过这个程序说明一下public和private两个访问控制符的使用
由上面的代码可以知晓,本程序定义了一个public的int型变量,一个private的int型变量,一个public的方法,还有一个private的方法,
首先要说的是,在f()和g()方法内部可以随意使用i和j,因为它们同属于一个类中,而23行是没有错的,因为i是public的26行本身也没有错误,但是如果去掉前面的注释会报错,这是因为f()方法中有g(),而g()方法中也有f(),这就形成了间接递归(关于递归,会在数据结构中说的,这里不多说)
而25行27行会报错,因为j和g()方法都是private的
【所有代码均在windows系统下eclipse环境JDK 1.7下运行通过】
(如有错误,敬请指正)
- java 访问控制符
- java 访问控制符
- 访问控制符
- java 访问控制符
- 访问控制符
- 访问控制符 区别
- java访问控制符
- java 访问控制符
- 访问控制符
- PHP访问控制符
- 对象、访问控制符
- 访问控制符
- 访问控制符
- java访问控制符
- java访问控制符
- 访问控制符
- java--访问控制符
- 访问控制符
- CODEFORCE 246 Div.2 B题
- IE浏览器打开网页提示安全证书过期或证书错误的解决方法
- PAT A 1039. Course List for Student (25)
- MySQL数据库的用户管理相关配置
- Java打成可执行jar过程中需要注意的一些问题
- 访问控制符
- 人一旦选择活下去,就必须为了生活起早贪黑,四处奔波
- opencv下haarclassifiercascade加上LBPHFaceRecognizer实现人脸识别
- 稀疏矩阵的转置
- zxcvbn: realistic password strength estimation
- JDK1.7中引用sun.management.ManagementFactory
- 各大主要组织
- 一次学习成绩的考差,并不能否定每次都考不好
- web应用的数据传输格式