当前位置: 技术问答>java相关
有个问题困惑着我!!
来源: 互联网 发布时间:2015-08-23
本文导语: 高手们,您们好啊!“访问控制 (4)”中的问题在下实在不会,欲求一解,因为本人才疏学浅,能否通俗解之?感激不尽! 访问控制 (1) 类的访问控制说明符 (Access S...
高手们,您们好啊!“访问控制 (4)”中的问题在下实在不会,欲求一解,因为本人才疏学浅,能否通俗解之?感激不尽!
访问控制 (1)
类的访问控制说明符 (Access Specifier)
公共的 (public):对所有的类均可见
语法: public class 类名称{ }
友好的 (“friendly”,无关键字):只对同一包中的类可见
在一个源代码文件 (*.java)中只能有一个公共类,且该公共类的名
称必须要与源代码文件名称精确匹配。
// TheSameName.java
public class TheSameName{ }
访问控制 (2)
类 同一类 同一包中 不同包的 不同包的
的类 子类 非子类
访问
public 可见 可见 可见 可见
protected 可见 可见 可见
“friendly” 可见 可见
private 可见
访问控制 (3)
// Cake.java
package mypackage;
public class Cake{
void bite() { System.out.println(“Delicious!”); }
}
//Dinner.java
import mypackage.*;
public class Dinner{
public static void main(String[ ] args){
Cake x = new Cake();
x.bite(); //Can’t access
}
}
访问控制 (4)
bite()方法加上public
使用缺省包机制
假定ClassPath = D:,.
将Cake.java中的package声明去掉
将Cake.java文件移动D:下或者当前目录下
访问控制 (1)
类的访问控制说明符 (Access Specifier)
公共的 (public):对所有的类均可见
语法: public class 类名称{ }
友好的 (“friendly”,无关键字):只对同一包中的类可见
在一个源代码文件 (*.java)中只能有一个公共类,且该公共类的名
称必须要与源代码文件名称精确匹配。
// TheSameName.java
public class TheSameName{ }
访问控制 (2)
类 同一类 同一包中 不同包的 不同包的
的类 子类 非子类
访问
public 可见 可见 可见 可见
protected 可见 可见 可见
“friendly” 可见 可见
private 可见
访问控制 (3)
// Cake.java
package mypackage;
public class Cake{
void bite() { System.out.println(“Delicious!”); }
}
//Dinner.java
import mypackage.*;
public class Dinner{
public static void main(String[ ] args){
Cake x = new Cake();
x.bite(); //Can’t access
}
}
访问控制 (4)
bite()方法加上public
使用缺省包机制
假定ClassPath = D:,.
将Cake.java中的package声明去掉
将Cake.java文件移动D:下或者当前目录下
|
(3)里面说的问题是static方法不能调用非static方法,也不能访问非static数据。
(4)是说将bite()方法声明为public,同时按照它说的方法来实现缺省包机制,就可以使bite()方法对于任何类都是可见的了。
注意:(3)和(4)是两个不同的问题,(4)的方法解决不了(3)中的问题,只有把bite()声明为static,才能解决(3)的问题。
(4)是说将bite()方法声明为public,同时按照它说的方法来实现缺省包机制,就可以使bite()方法对于任何类都是可见的了。
注意:(3)和(4)是两个不同的问题,(4)的方法解决不了(3)中的问题,只有把bite()声明为static,才能解决(3)的问题。
|
“访问控制 (4)”中不是问题,而是解答。
因为(3)中“ x.bite(); //Can’t access”
这是一个问题,(4)中给出了两个解决方法。
一个是:“bite()方法加上public”
一个是:“使这两个类在同一个包(package)内”,具体可以用的方法如(4)中所述。
因为(3)中“ x.bite(); //Can’t access”
这是一个问题,(4)中给出了两个解决方法。
一个是:“bite()方法加上public”
一个是:“使这两个类在同一个包(package)内”,具体可以用的方法如(4)中所述。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。