一般的类是不可以定义为private或者protected类型的。只有当类作为另一个类的属性的时候才可以定义为private或者protected类型。如下:
class a {
static int a = 88;
static void a1(){
System.out.println("------");
}
protected class d{
void d1(){
System.out.println("*----*");
}
}
private class e{
void e1(){
System.out.println("&----&");
}
}
}friendly不是类的类型关键字吧?你提出的“作用域public,private,protected,以及不写时的区别”的研究对象应该是方法和变量的,不是类的。
class a {
static int a = 88;
static void a1(){
System.out.println("------");
}
protected class d{
void d1(){
System.out.println("*----*");
}
}
private class e{
void e1(){
System.out.println("&----&");
}
}
}friendly不是类的类型关键字吧?你提出的“作用域public,private,protected,以及不写时的区别”的研究对象应该是方法和变量的,不是类的。
解决方案 »
- java向c传递一个结构
- 关于webservice的几点迷惑,朋友们进来指导下..
- 请问java ee对XML的要求。
- 超链接指向中文文件下载出错
- 自学java如何找工作
- 请教:java.lang.IllegalStateException 上下文未准备好下一次连接
- Hibernate非主键列自增问题
- blog程序里面如何给每篇文章生成一个唯一的ID
- 安装TOMCATde 问题
- 请教ECLIPSE的lomboz插件安装好后显示不出来的问题!
- 不能显示值<html:text property="validatecode" value='<bean:message key="page.vcode"/>'/>
- 有谁知道swarmcache
System.out.println(a);是正确的,因为认为a是b的属性。
既然a是属性了,a.a自然在编译的时候就必然要报错了,因为b的属性a类型为int,而int是没有属性a或方法a1()的。只要你把类或属性名换换,不要用一样的就OK了。
static int a = 88;
static void a1() {
System.out.println("------");
}
}public class Test extends A {
public static void main(String args[]) {
System.out.println(a);
a1();
A.a = 99;
A.a1();
// a.a=99; 为什么会报错;a类的a变量是static的阿
// a.a1(); 为什么会报错;a类的a方法是static的阿
// 这里报错是因为编译器认为.前面的那个a是静态变量a,而不是类a
// 编译器总是从最近的范围往外查找标识的,
// 既然已经在静态成员里找到了叫a的成员,那就不会去外面一层找叫a的类了
// 如果你把类名a改成大写的A就不会出现这种冲突了
}
}