Q:当一个Java文件中存在两个类,如何在一个类中调用另一个类的成员方法?(例:在B类中调用A类的成员方法)
A:1、若A类中的成员方法非静态(即没有static),则在B类中创建A类的一个对象就可以调用A类中的成员方法。语法为:对象名.方法名
举例说明:
public class Car{ //B类 public static void main(String[] args){ Station station = new Station();//在B类中创建一个A类对象 int leftOil = 10; System.out.println("原有油量为10L。"); for(int i = 1;i<6;i++){ System.out.println("第"+i+"次加油之后,现有油量为:"+station.refuel(leftOil)+"L。"); leftOil = station.refuel(leftOil); //在B类中调用A类的成员方法refuel } } } class Station{ //A类 public int refuel(int oil){ oil = oil+2; return oil; } }
拓展:
2、若A类中的成员方法为静态(即有static)
- 调用其他类文件的成员方法或自身类文件中其他类中定义的成员方法。语法为:类名.方法名。
public class A{ public static void function(long primarylength){ primarylength += 20; } } public class B{ public static void main(String[] args){ System.out.println(A.primarylength); } }
- 调用自身类文件中外层类(父类)中定义的成员方法。语法为:方法名(无需使用类名或对象名调用)。
总结:
- 如果类中的方法是私有的(private)则不能被调用,即便是该类的子类也不行。(PS:父类中私有的成员变量和成员方法,虽然可以被子类继承,但是子类继承之后该变量和方法会被隐藏,导致子类无法使用父类中私有的成员变量和成员方法。)
- 如果子类调用父类中的非私有方法,则可以用方法名直接调用。
- 如果该方法是静态的(有static),则其他类调用时不需要实例化,直接用类名.方法名就可以直接调用。(例如:Math.random())
- 如果该方法不是静态的(没有static),则其他类调用时需先实例化,然后用对象名.方法名调用。(大部分情况下都是这样用的。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)