为什么我调用了子类的方法,给子类的属性赋了值,输出的结果却只为零

来源:10-1 Java 中的多态

绫清竹

2018-08-14 12:08

测试类
package imooc.com;public class Tt {	public static void main(String[] args) {	
	// TODO Auto-generated method stub
	AA aa=new AA();
	AA n=new BB();
	n.a=1;n.b=2;
	double d=n.Nn();
	System.out.println(d);	
	}}

类1

package imooc.com;


public class AA {

public double a;

public double b;

public double Nn(){

double s=0;

return s;

}

}

类2

package imooc.com;


public class BB extends AA {


public double a;

public double b;

public double Nn(){

double s=0;

s=a+b;

return s;

}

}


写回答 关注

3回答

  • 呆呆喵
    2018-08-30 14:38:46
    已采纳

    我把你的代码拿来试了一下,发现你的值是赋到了父类的a和b
    所以子类的a和b的值为0,返回的值就为0

  • tdxrtxxjy
    2018-09-09 14:30:34

    继承的初始化顺序是先父类后子类,你的值赋给父类了。

  • DF10F0001A
    2018-08-14 18:52:14

    哥们,你试试:

    b类

    package imooc.com;

    public class BB extends AA {

    public double Nn(){

    double s=0;

    s=a+b;

    System.out.println(""+s);

    return s;

    }

    }


    慕仰8542...

    会不会是因为他子类重写的方法是没有设置参数的,所以 a b 都是默认的0,导致自己通过调用属性设置的值传不进去.

    2018-08-21 17:31:26

    共 2 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530553 学习 · 6091 问题

查看课程

相似问题