Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Java中的方法调用和继承_Java_Class_Oop_Inheritance - Fatal编程技术网

关于Java中的方法调用和继承

关于Java中的方法调用和继承,java,class,oop,inheritance,Java,Class,Oop,Inheritance,如果我为getMoney()方法而不是public设置了private,则MyMoney类中的money.getMoney()无法访问它 public class Money { public int money = 50; public Money(int m) { money = m; } public int getMoney() { return money; } } public class M

如果我为
getMoney()
方法而不是
public
设置了
private
,则MyMoney类中的
money.getMoney()
无法访问它

public class Money {
     public int money = 50;

     public Money(int m) {
         money = m;
     }

     public int getMoney() {
         return money;
     }
}

public class MyMoney {
        int my;  
        Money mymoney = new money(100);
        my = mymoney.getMoney();          
}

public class HeMoney extends Money {
    public int hemoney = 0 ;
    hemoney = getMoney();

    @Override
    public int getSheMoney() {
         return hemoney;
     } 
}

public class SheMoney extends Money {
    public int shemoney = 70;

     public SheMoney(int m) {
         shemoney = m;
     }

     public int getSheMoney() {
         return shemoney;
     }
}
  • 在HeMoney类中,我可以直接调用
    getMoney()
    ,而无需创建Money对象,因为HeMoney类是从Money类派生的

  • public class Money {
         public int money = 50;
    
         public Money(int m) {
             money = m;
         }
    
         public int getMoney() {
             return money;
         }
    }
    
    public class MyMoney {
            int my;  
            Money mymoney = new money(100);
            my = mymoney.getMoney();          
    }
    
    public class HeMoney extends Money {
        public int hemoney = 0 ;
        hemoney = getMoney();
    
        @Override
        public int getSheMoney() {
             return hemoney;
         } 
    }
    
    public class SheMoney extends Money {
        public int shemoney = 70;
    
         public SheMoney(int m) {
             shemoney = m;
         }
    
         public int getSheMoney() {
             return shemoney;
         }
    }
    
  • 在HeMoney类中,我可以重写
    getSheMoney()
    ,因为这两个类(HeMoney和SheMoney)都是从Money类派生的

    public class Money {
         public int money = 50;
    
         public Money(int m) {
             money = m;
         }
    
         public int getMoney() {
             return money;
         }
    }
    
    public class MyMoney {
            int my;  
            Money mymoney = new money(100);
            my = mymoney.getMoney();          
    }
    
    public class HeMoney extends Money {
        public int hemoney = 0 ;
        hemoney = getMoney();
    
        @Override
        public int getSheMoney() {
             return hemoney;
         } 
    }
    
    public class SheMoney extends Money {
        public int shemoney = 70;
    
         public SheMoney(int m) {
             shemoney = m;
         }
    
         public int getSheMoney() {
             return shemoney;
         }
    }
    
  • 因为我是初学者,我想知道我的知识是否正确

  • 我不知道你说的“代码之外”是什么意思,但是如果你想从该类的外部访问它,你必须使用“rectone.getArea()”并且你必须将该方法声明为public或protected

  • 不清楚您是要“调用”还是“声明”该方法n子类。 如果要调用该方法,则无需扩展该超类。 如果要声明该方法,请扩展该超类并使用相同的签名声明它

  • 对。您可以在MountainBike类及其独立于RoadBike类中重写它

  • 扩展访问权限(想法1,“派生并公开”)并不总是优雅的,可能会违反规则
  • 降低访问级别(在子问题2中讨论),标记为私有(编译器禁止)(有趣的长讨论:在java禁止,C++中没有)

  • 我觉得(不清楚)过程性思维有问题,翻译成Java:
    want CALL然后create object
    是过程性思维。OOP是
    我有一个对象,可以调用
    是的,您的理解是正确的

  • 是的,您需要为从其他类调用任何方法创建对象。 示例:-您有类“Person”和其他类“Vehicle”。此车辆有方法ride,人员要调用ride,他有第一个对象Vehicle
  • 当您扩展任何类的/subclass时,您将继承public和protected方法。所以,您可以在子类中直接调用它,因为它正在调用自己的方法。 现在,另一类汽车扩展了汽车,这意味着汽车就是汽车,所以汽车可以自动调用骑乘
  • 现在有一种列车延伸到车辆上,现在若列车想从车辆上以另一种方式行驶。它想坐在铁轨上,这样火车就可以编写自己的版本了。这就是所谓的覆盖

  • 我读了这行
    我只是用了一个简单的方法名,并声明了它,没有使用私有修饰符。
    很多次,我都不明白你的意思。2。最好使用
    protected
    修饰符。不能从同级重写方法。只有一个祖先。为什么不为这三种情况编写代码,编译并测试它呢?1-不,在
    矩形上调用
    getArea
    不需要执行任何这些操作。只需构造一个并对其调用方法-例如,
    new Rectangle(arguments).getArea()
    @user3437460对不起。因为我不是以英语为母语的人,所以我不能流畅地写出英语句子。我也想到“代码之外”这个词。我觉得Vul18反向(在这个开始的问题中,ok)电视连续剧的第一部分和第二部分:当我想调用一个方法时,需要创建对象。这与思维相反。对不起,我也不是以英语为母语的。