日期:2014-05-20  浏览次数:20752 次

//请真正能深入了解java语法的朋友进来说两句!!!!!
public   class   aa
{
public   int   num=1;
}

class   bb   extends   aa
{
public   String   num= "真的爱你 ";
public   static   void   main(String   args[])
{
bb   t=new   bb();
System.out.println(t.num);
}
}

/***************************************************************************
各位朋友,如上程序所示,aa为bb   的超类,如果在同一个类中定义两个同名,但不同类型的变量,
java编译时都不会成功.但上面的这个程序例外.
也就是说同时存在int   num和string   num   两个变量,
我想请教的是,如何在bb类中获得int   num   的值呢(t.num是string   num   的值)?
****************************************************************************/

------解决方案--------------------
关注
------解决方案--------------------
aa a = new bb();
System.out.println(a.num);
------解决方案--------------------
aimer311是对的

bb t=new bb(); //t就是bb的实例,t.num自然就是引用t的变量了
------解决方案--------------------
应该这个叫重载吧。
所以不会发生错误。

------解决方案--------------------
System.out.println(Test.num);
------解决方案--------------------
这没什么以外的。。。。

类的继承是允许父类与子类中同名变量的,但使用过程中是以子类变量为准的:
所以
aa a1 = new bb();
System.out.print(a1.num);// "真的爱你 ";

bb b1 = new bb();
System.out.print(b1.num);// "真的爱你 ";

aa a2 = new aa();
System.out.print(a2.num);// 1

bb b2 = new aa();//错误用法





------解决方案--------------------
要想调用大aa里面的int num
在bb里面使用super.num。就ok了!
------解决方案--------------------
先创建aa类的对象,就能访问了。
------解决方案--------------------

daniel_kaka兄,不要误导别人好吧?
aa a1 = new bb();
System.out.print(a1.num);会输出 "真的爱你 "?
------解决方案--------------------
super.num就OK
------解决方案--------------------

在图形图像里,如何将float 型数据转化成sring类型阿
------解决方案--------------------
呵呵,测试了一下,确实是 AA a = new BB() 确实输出AA里面定义的变量
------解决方案--------------------
虽然super.num就是父类的变量,但是只能在构造器中使用,你可以new 一个父类对象,通过对象调用num的值!
------解决方案--------------------
这样改下
public class aa {
public int num = 1;

public static void main(String... strings) {
bb p = new bb();
System.out.println( "num= " + ((aa) p).num);
System.out.println( "num= " + p.num);
}
}

class bb extends aa {
public int num = 8;

public static void main(String args[]) {
bb t = new bb();
System.out.println(t.num);
}
}
//结果是
num=1
num=8
////////////////////////////
这说明父类、子类的字段不是放在一个空间中,子类不会覆盖父类,子类的实例以子类的面孔出现的时候调用的是子类的该字段,以父类的面孔出现的时候调用的是父类的该字段。两者井水不犯河水。

这跟方法有区别,方法从来都是子类覆盖父类。不管子类的实例以什么面孔出现调用的都是子类的方法
------解决方案--------------------