class A
{
String a="class A";
}
class B extends A
{
String b="class B";
String a="class c";
}
class exam
{
public static void main(String args[])
{
A a1,a2=new A();
B b1,b2=new B();
System.out.println(a1.a);
System.out.println(b1.b);
}
}
这里它说a1.a和b1.b未被初始化。a1不已经是新建A类的对象了么,a1.a就调用A里的a就好了么,为啥还要初始化。。
还有
class A
{
String a="class A";
}
class B extends A
{
String b="class B";
String a="class c";
}
class exam
{
public static void main(String args[])
{
A a1,a2=new A();
B b1,b2=new B();
a1=b2;
b1=(B)a1;
System.out.println(a1.a);
System.out.println(b1.b);
}
}
就对了。。这b2不也是新建的对象么,咋就能给别人赋值,按理他自己也还没初始化了。。
下面主要是说明一下在Java语言中,创建对象和对象赋值的问题。
1、创建对象必定会涉及到对象被初始化的问题,因为在Java语言中一个对象如果不被初始化就使用的话,是会抛出一个空指针异常,如下
String x;2、如何初始化,使用new关键字初始化
String o1 = new String("zhangsan");3、对象之间的赋值
String o2 = "zhangsan";"zhangsan"是一个匿名的字符串对象,又被称为字符串常量,将一个字符串常量对象赋值给一个申明类的字符串对象,o2在栈中存放了“zhangsan”的引用地址,所以最有效的赋值是
String o2 = "zhangsan";//系统开销小