//请真个能深入了解java语法的朋友进来说两句!

//请真正能深入了解java语法的朋友进来说两句!!!!!publicclassaa{publicintnum1}classbbextendsaa{publi

//请真正能深入了解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
////////////////////////////
这说明父类、子类的字段不是放在一个空间中,子类不会覆盖父类,子类的实例以子类的面孔出现的时候调用的是子类的该字段,以父类的面孔出现的时候调用的是父类的该字段。两者井水不犯河水。

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


((aa)p),把对象上溯造型为aa,是这样吗?我连thing in java都还没看完,错了别笑话
[解决办法]
正确的路只有一条,而错误的路有无数条。你只要知道这是正确能用而进入下一次阶段就行了,没必要去反复地问为什么。如果你这样的话,是学不了东西的。
[解决办法]
我觉得有必要弄清楚
一个类是方法+属性(或者叫做函数+成员变量之类的叫法)
对于方法而言,运行时确定调用的方法入口
对于变量而言,是在编译的时候确定的
比如
class Father {
public int num = 1;
public void tellASecret() {
System.out.println( "Father 's secret. ");
}
}
class Son extends Father {
public String num = "hello ";
public static void main(String[] args) {
Son son = new Son();
son.tellASecret();
}
public void tellASecret() {
System.out.println( "Son 's secret. ");
}
}
如果你声明了一个引用,在调用方法的时候会根据运行时的类型调用相应的方法
在通过引用读取变量的时候,是根据引用的声明类型来确定的

也就是说,儿子有什么属性是和老子没关系的,我愿意叫什么叫什么

你用什么样的引用读取,就是什么类型的值。
[解决办法]
什么叫编译期类型?什么叫运行时类型?搞清楚了动态绑定和静态绑定的区别,搞清楚java中只有实例方法可以动态绑定,这样的问题就不要再问了。
[解决办法]
good
[解决办法]
aa a = new bb();
System.out.println(a.num);