美文网首页
使用多态,出现了Java初始化无效的问题

使用多态,出现了Java初始化无效的问题

作者: 虚无一代 | 来源:发表于2018-06-22 18:01 被阅读0次

    前几天做一个项目,利用多态创建了一个对象,并对其传参了,但是调用其get方法的时候却发现其属性并没有被初始化。下面写了几个简单的例子来还原一下其具体情况:

    这是父类ex

    package tutorial1;
    import java.util.ArrayList;
    
    public class ex {
        private int a;
        private int b;
    
        public ex(int a, int b) {
            this.a = a;
            this.b = b;
        }
    
        public ex(){
            this(0, 0);
        }
    
        public int getA() {
            return a;
        }
    
        public int getB() {
            return b;
        }
    
        public void setA(int a) {
            this.a = a;
        }
    
        public void setB(int b) {
            this.b = b;
        }
    }
    

    这是子类ex1

    package tutorial1;
    
    public class ex1 extends ex {
        private int a;
        private int b;
    
        public ex1(int a, int b) {
            this.a = a;
            this.b = b;
        }
    
    }
    

    这是检测方法:

    package tutorial1;
    
    public class userEx {
        public static void main(String[] args) {
            ex obj = new ex1(88, 88);
            int a = obj.getA();
            int b = obj.getB();
            System.out.println(a);
            System.out.println(b);
        }
    }
    

    输出结果是:



    最后发现问题其实就是子类中没有重写get方法,导致调用get方法的时候实际上是调用了父类方法,所以get到的是父类的属性值。新建对象的时候只是初始化了子类的属性值。这样自然就无法get到值了。

    相关文章

      网友评论

          本文标题:使用多态,出现了Java初始化无效的问题

          本文链接:https://www.haomeiwen.com/subject/rqqlyftx.html