java 中当父类对象变量引用子类对象后,用变量调用静态常量,调用的是子类还是父类?多态

解决方案 »

  1.   

    举一个例子吧、你这样说太抽象
    一般来说,是调用的范围小的那一个
    你问的是这个意思么?public class Test {
    public static void main(String[] args) {
    Father father=new Son();
    System.out.println(father.i);//输出1
    System.out.println(father.ii);//输出11
    }
    }
    class Father{
    public static int i=1;
    public int ii=11;
    }
    class Son extends Father{
    public static int i=2;
    public int ii=12;
    }
      

  2.   

    向上转型。相当于
    Father father =new Father();
      

  3.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
      

  4.   

    静态常量属于一个class,所以声明的是什么类,就会用那个类的常量的值。你的这种编程逻辑本来就是不可取的,既然调用的是静态常量就要用类的名,而不是用一个类的实例。调用一个静态方法也是直接用类名,而不是用类的实例
      

  5.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    用父类声明的对象变量,可能表示的不是很清楚。
      

  6.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    用父类声明的对象变量,可能表示的不是很清楚。
    你到底什么意思,杀了我吧。。
    你举出一个代码的例子吧。。
      

  7.   

    问一个很矬的问题,被public修饰的变量与静态变量在类外调用形式是不是相同(习题中的)。
      

  8.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    class J_Base{
            public int m_date=1;
            public String mb_method()
            {
             return"2";
             } 
                  }
    class J_Test extends J_Base
           {
            public int m_date=3
            public String mb_method()
          {
             return"4";
           }
            public static void main(String[] args)
         {
            J_Base app=new J_Test(); 
             System.out.println(app.m_date+app.mb_method());
          }
    }
    就是一道题,输出14,当时问的是静态变量。
      

  9.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    class J_Base{
            public int m_date=1;
            public String mb_method()
            {
             return"2";
             } 
                  }
    class J_Test extends J_Base
           {
            public int m_date=3
            public String mb_method()
          {
             return"4";
           }
            public static void main(String[] args)
         {
            J_Base app=new J_Test(); 
             System.out.println(app.m_date+app.mb_method());
          }
    }
    就是一道题,输出14,当时问的是静态变量。
    亲,一定区分清楚
    成员变量和成员方法。
    另外你给我的例子中没有静态的内容啊
    静态的是static修饰的你这题,
    app.m_date输出的是父类的m_data成员变量
    而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
      

  10.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    class J_Base{
            public int m_date=1;
            public String mb_method()
            {
             return"2";
             } 
                  }
    class J_Test extends J_Base
           {
            public int m_date=3
            public String mb_method()
          {
             return"4";
           }
            public static void main(String[] args)
         {
            J_Base app=new J_Test(); 
             System.out.println(app.m_date+app.mb_method());
          }
    }
    就是一道题,输出14,当时问的是静态变量。
    亲,一定区分清楚
    成员变量和成员方法。
    另外你给我的例子中没有静态的内容啊
    静态的是static修饰的你这题,
    app.m_date输出的是父类的m_data成员变量
    而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
    输出4明白就是不太明白为什么输出1,app.m_date,被public修饰的成员变量是不是可以像静态变量一样调用?谢谢啊。
      

  11.   

    我可以理解为父类对象变量无法访问子类中成员变量吗?
    成员变量访问子类成员变量?
    这样?class Father{
    public int i=1001;
    public Father() {
    // TODO Auto-generated constructor stub
    }
    public void show(){

    }
    }
    class Son extends Father{
    public int i=10001;
    public int ii=super.i;
    public Son() {
    // TODO Auto-generated constructor stub
    }
    public void show(){
    System.out.println(i);
    System.out.println(super.i);
    }
    }
    class J_Base{
            public int m_date=1;
            public String mb_method()
            {
             return"2";
             } 
                  }
    class J_Test extends J_Base
           {
            public int m_date=3
            public String mb_method()
          {
             return"4";
           }
            public static void main(String[] args)
         {
            J_Base app=new J_Test(); 
             System.out.println(app.m_date+app.mb_method());
          }
    }
    就是一道题,输出14,当时问的是静态变量。
    亲,一定区分清楚
    成员变量和成员方法。
    另外你给我的例子中没有静态的内容啊
    静态的是static修饰的你这题,
    app.m_date输出的是父类的m_data成员变量
    而方法执行的是子类的mb_method()方法,原因是子类把父类的方法给重写了。
    输出4明白就是不太明白为什么输出1,app.m_date,被public修饰的成员变量是不是可以像静态变量一样调用?谢谢啊。
    首先你要区分好静态变量和非静态变量的区别
    静态变量可以在静态方法中直接调用
    而public声明的是可以在其他类中调用这两者不一样。。你声明的是一个father的对象。
    子类继承了父类所有的东西(private的除外)
    有重名的成员变量怎么办?ok,声明的是谁那就调用谁的
    有重名的方法(输入参数一直)怎么办?ok,那就优先调用子类的方法。
      

  12.   

    这奇葩的问题,静态变量和public有关系么?
    静态变量直接用类名.变量名就可以访问,从属于类,但前提是你的变量要是被public修饰或者其他能访问得到的修饰符修饰的。
    这两者完全不好比较。。不知道怎么回答你。
    如果是说被public修饰的成员变量 与 静态public变量在类外调用的形式是不是相同这个倒是可以回答下
    成员变量用对象.变量名   静态变量用类名.变量名 
    即可访问