2. 给定下列代码:
1 class Parent {
2 private String name;
3 public Parent(){}
4 }
5 public class Child extends Parent {
6 private String department;
7 public Child() {}
8 public String getValue(){return name;}
9 public static void main(String arg[]){
10 Parent p = new Parent();
11 }
12 }
上述代码的那些行将会导致错误?为什么?
1 class Parent {
2 private String name;
3 public Parent(){}
4 }
5 public class Child extends Parent {
6 private String department;
7 public Child() {}
8 public String getValue(){return name;}
9 public static void main(String arg[]){
10 Parent p = new Parent();
11 }
12 }
上述代码的那些行将会导致错误?为什么?
解决方案 »
- 新手!无法解析导入 java.util.Arraylist,求具体解决方法。
- 菜鸟急问:ArrayList初始容量问题
- 还是字符串的问题 请各位给我看看,谢谢.................
- System.out.println和printInt这两个打印的有什么不同?
- Java Puzzlers里面的一个谜题,大家都给个解释,进者有分
- 每个执行的java SomeClass 都分别启动了各自的JVM吗?
- mouseEventHandler不灵敏??为什么会忽略点击JButton的事件?
- 高分相赠!!!!!哪里下载运行Java程序的JVM?
- 简直就是送分!
- Java日志输出问题
- 汗,心寒了!问个奇怪的问题,希望有人回答------------分不多
- 关于包和protected方法问题
上面这行会导致错误。
因为name是父类的私有成员,在子类中看不到。
children 看不到 parent的privte属性。
附带问一个与这个主题无关的问题
public String s(){}
这句话是什么意思?
我记得还看到过public Static s(){}
String和Static定义方法?
这是啥意思?不理解
children 中看不到 parent的privte属性。
children 中看不到 parent的privte属性。
所以问题所在是第8行:子类Child的成员方法getValue()访问了超类的私有private变量。把超类中的变量name声明为public类型就行了,或者直接去掉private就行了,java中默认的类型就是public
附加问题:public String s(){}是一个public类型的方法,其返回值的类型是String;
public static s(){}是一个用关键字static修饰的方法,被static修饰的变量和方法可以看成是全局变量和方法,类本身和所有实例都共享一个static变量、方法;只能访问其他被static修饰的变量和方法;不能以任何形式调用this、super;在定义static方法、变量的类的外面,可以独立于任何对象使用,仅需要使用它们的类名和一个点运算符。
另外,如果声明static变量时没有初始化,而后面想对它赋值必须通过一个static块来赋值。
例:
class A
{
static int a=10;
static int b; //没有初始化
static //通过static块来给static变量赋值
{
b=a*2;
}
staic print_ab() //static 方法
{
System.out.println("a:"+a);
System.out.println("b:"+b);
}
}
public class StaticDemo
{
public static void main(String[] args)
{
A.print_ab(); /*访问static方法可以独立于任何对象,只需要指定它的类名,以及后面跟一个点运算符*/
}
}运行结果:
a:10
b:20