java运行后的代码放在哪里_下面这个JAVA代码,哪里错了?运行后控制台输出的不对。...

class A {double f(double x, double y) {return x + y;}int getNumber(int a) {return a + 1;}static int g(int n) {return n * n;}int m;int getM() {return m;}int seeM(){return m;}}class B extends A {double f(int x, int y) {return x * y;}int getNumber(int a) {return a + 100;}int xx() {return 11;}static int g(int n) {int m = A.g(n);return m + n;}int m;int getM() {return m + 100;}}class E {public static void main(String[] args) {B b = new B();System.out.println(b.f(3, 5));// 15.0System.out.println(b.f(3.0, 5.0)); // 8.0A a = new A();System.out.println(a.getNumber(10));// 11a = new B();// 原因为A的引用,B的对象,A的引用a指向B对象,此时的a只会拥有A的方法,但是如果B中有方法覆盖了A的方法,则会使用B的方法System.out.println(a.getNumber(10));// 110System.out.println(b.f(10.0, 8.0)); // 18.0System.out.println(b.g(3));// 12a = new B();// 原因为A的引用,B的对象,A的引用a指向B对象,此时的a只会拥有A的方法,但是如果B中有方法覆盖了A的方法,则会使用B的方法System.out.println(a.f(10.0, 8.0)); // 18.0System.out.println(a.g(3));// 9b.m = 20;System.out.println(b.getM());// 120A a1 = b;// a1指向对象ba1.m = -100;// a1变量赋值-100System.out.println(a1.getM());// 120: a1.getM()==>实质上已经被b的getM覆盖,且此时用的是b的变量100,调用之后结果为20+100 = 120System.out.println(b.seeM());// -100: b的seeM()来自父类A,当然会调用父类的A.m=-100,所以此时结果为-100}}class Father {private int money = 12;float height;int seeMoney(){return money;}}class Son extends Father {int height;int lookMoney() {int m = seeMoney();return m;}}class EE {public static void main(String[] args) {Son erzi = new Son();// erzi.money = 300;// 错误原因在Son没有money这一属性,什么样的引用对应什么样的变量和方法// erzi.height = 1.78F;// 类型错误}}abstract class XX {// 只能设置可视性修饰符“公用”或“受保护”中的一个public static void cry(){}abstract float cry1();}

取消

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值