我是Java的新手。这是OOP的一个例子。我有一个名为“Automobile.java”的类文件,驱动程序保存为 AutomobileTest.java 我的问题是什么时候在AutomobileTest.java中创建一个对象,它怎么知道它必须从Automobile.java访问方法和变量。
这是我的代码:
Automobile.java
class Automobile{
public int numWheels;
public String colour;
public boolean engineRunning;
public double mileage;
public int numSeats;
public Automobile(int wheels,int seats,String vehicleColour){
numWheels=wheels;
numSeats=seats;
colour=vehicleColour;
engineRunning=false;
mileage=0.0;
}
public void startEngine(){
engineRunning=true;
}
public void stopEngine(){
engineRunning=false;
}
public double drive(double numMiles){
return mileage+=numMiles;
}
public String toString(){
String s="numWheels="+numWheels+"\nNumber of seats = "+numSeats+ "\nColour:" +colour+ "\nEngineRunning: " + engineRunning;
return s;
}
}
AutomobileTest.java
public class AutomobileTest{
public static void main (String args[]){
Automobile ferrari=new Automobile(4,2,"red");
System.out.println(ferrari);
System.out.println("Engine started");
ferrari.startEngine();
System.out.println(ferrari);
}
}
答案 0 :(得分:2)
从您的问题中我完全理解您是Java编程的新手。
要回答您的问题,请在AutomobileTest.java文件中包含声明
Automobile ferrari=new Automobile(4,2,"red");
在这一行中,关键字“new”将告诉java编译器创建类Automobile的对象,因此java编译器将知道要访问哪个类。
要了解更多相关信息,您需要做大量的研究。请参阅 this book。
答案 1 :(得分:1)
如果您问AutomobileTest.java
的内容如何知道在Automobile
中找到Automobile.java
类,这与Java打包有关。
在Java中,您可以通过在多个Java源文件的顶部说package X
来将类声明为某个包。这意味着它们将共享一个“命名空间”,因此可以访问方法和变量(使其他评论者提到的访问修饰符,例如public
和private
)。
但似乎您的文件顶部没有说package X
。好吧,默认情况下,Java将文件放在“匿名包”中的同一目录中,因此技术上Automobile.java
和AutomobileTest.java
共享命名空间。
有关Java包的更多信息,请参阅以下资源: http://en.wikipedia.org/wiki/Java_package http://docs.oracle.com/javase/tutorial/java/package/packages.html
答案 2 :(得分:1)
它知道,因为它们在同一个包中。阅读有关包和访问保护here。
答案 3 :(得分:0)
看一下这个问题:In Java, difference between default, public, protected, and private
Modifier | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public | ✔ | ✔ | ✔ | ✔
————————————+———————+—————————+——————————+———————
protected | ✔ | ✔ | ✔ | ✘
————————————+———————+—————————+——————————+———————
no modifier | ✔ | ✔ | ✘ | ✘
————————————+———————+—————————+——————————+———————
private | ✔ | ✘ | ✘ | ✘