我是编码新手,我制作了这个程序,允许某人输入歌曲名称、艺术家、专辑和发行年份,然后我就可以打印出来。所以,虽然我可以编写程序,但我不明白main是如何访问CD类的。电脑怎么知道我正在用我的另一个班制作CD?为什么我能够使用CD类中的访问器方法?如果这听起来很愚蠢,我很抱歉,但我正在努力理解它为什么有效!谢谢你的回答。
感谢所有回答的人!现在有意义了!
package project1;
public class CD {
private String song;
private String artist;
private String album;
private int year;
public CD(String givenSong, String givenArtist, String givenAlbum, int givenYear)
{
song=givenSong;
artist=givenArtist;
album=givenAlbum;
year=givenYear;
}
public String getSong(){
return song;
}
public int getYear(){
return year;
}
public String getArtist(){
return artist;
}
public String getAlbum(){
return album;
}
}
和主要。。
package project1;
public class CDTest {
public static void main(String[] args){
CD cd1= new CD("Sad machine","Porter Robinson","Worlds",2014);
System.out.print(cd1.getSong()+", ");
System.out.print(cd1.getArtist()+", ");
System.out.print(cd1.getAlbum()+", ");
System.out.print(cd1.getYear());
}
}
您在同一个包中定义了两个类。在同一个包中定义的类可以用简单的名称引用它们自己,而不需要完全限定的名称(例如project1.CD
)或导入语句(例如import project1.*
)。以下是有关Java包的更多信息。
CDTest
类可以在CD
类上执行方法,因为方法是public
——任何类都可以访问。这与CDTest
假设访问CD
类的成员形成对比。不能,因为他们是private
。以下是有关访问级别(如public
和private
)的更多信息
因为您在同一个包中声明了它们,它们被编译在一起,并且都存在于类路径中。如果它们在不同的包中,则需要有一个import语句。
两个类都在同一个包中,CD类上的方法也标记为"public",因此它们是可访问的。如果你有时间的话,看看Java Trails,它们从非常基本的开始并逐渐增加。他们有一些非常好的例子和解释
--http://docs.oracle.com/javase/tutorial/getStarted/index.html
您可以访问CD
类,因为它与您的main
方法在同一个包中,所以您可以在不显式导入其他类的情况下进行访问。
之所以可以在cd1
上调用方法,是因为您已经创建了对象的实例(当您使用new
关键字时,您创建了CD
类的实例,并将该实例命名为cd1
。)
CD
中的方法可从cd1
获得,因为您已将所有方法的访问修饰符设置为public
。public
允许其他对象无限制地访问这些方法。
此外,不能直接从CD
调用这些公共方法的原因是,这些方法没有标记为static
。非static
方法不能直接从类中调用,只能从类的实例中调用。这些方法通常被称为"实例方法",而不是"静态方法"。