Java中的一个类怎么调用另一个类中的成员
一、基础知识
Java源文件以“java”为扩展名。源文件的基本组成部分是类(class)。
Java编译器编译Java源文件(.java文件)产生的“目标文件”叫字节码文件,以.class为扩展名。
一个源文件中最多只能有一个public类。其他类(如抽象类,default类即省去修饰符的类,接口)的个数不限。
如果源文件中包含一个public类,则文件名必须以该类名命名。
Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main (String args[]) {.....}
类的权限修饰符只有public和default(即省略权限修饰符)
public类可以在任意的地方被访问
default类只能被同一个包内部的类访问
如果想将一个类放入包(package)中,需要在源文件的第一句话写package。
包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。如果在源文件中没有定义包,那么类、接口、枚举和注释类型文件将会被放进一个无名的包中,也称为默认包。
要为类型(type)创建包(package),请将包语句作为包含该类型【注:类型(type)指类、接口、枚举或注释类型(class, interface, enumeration, annotation type)】的源文件中的第一条语句。
要使用不同包中的公共类型(public type),有三种选择:(1)使用类型的完全限定名(fully qualified name ),(2)导入类型,或(3)导入该类型为其成员的整个包。
二、Java中的一个类调用另一个类中的成员
一个类要想使用另外的类,如果两个类位于同一个包中,则不需要引入,可以直接使用;如果两个类不位于同一个包中,引入(用 import 语句)后才可以使用,而且要保证被引入的类是public类。
分几种情况介绍,每种情况还可采用实例方式和使用static修饰的方式实现调用。
★都不使用package语句的不同类的调用
这种情况:1)不需要 import 语句导入类文件;2)假设你在一个源文件文件中调用了另一个源文件,在命令行中用javac编译第一个Java源文件文件,被调用的源文件会被自动编译,或者说,不必显示指明被调用的源文件,其会被连带编译。当然也可一起编译。
1、用实例方式
新建一个类。然后在调用类中先进行被调用类实例化,然后通过实例化的对象访问。例如:
先定义一个类
public class SonA{
public void IsSon(){
System.out.println("调用sonA类中的IsSon成员方法成功");
}
}
将其保存在D:\JavaTest2 中文件名为SonA.java
提示:若用记事本编写源码,要保存时编码选用ANSI,参见下图:
定义调用类
public class MainA{
public static void main(String[]args){
SonA son = new SonA(); //实例化SonA类
son.IsSon(); //通过实例化的sonA对象调用IsSon方法
}
}
将其保存在D:\JavaTest2 中文件名为MainA.java,其含有入口是main()函数。
打开cmd,使用cd /d D:\JavaTest2 切换路径
编译源码 javac MainA.java
运行 java MainA
参见下图:
2、使用static修饰的方式
新建一个类,将该类中需要被调用的方法设置为静态(static),加了static后,就可以用类名直接调用。然后在调用类中直接通过类名进行访问。调用格式为:类名.方法名(参数表)。
先定义一个静态(static)类
public class SonB{
public static void IsSon(){
System.out.println("调用sonB类中的IsSon成员方法成功");
}
}
将其保存在D:\JavaTest2 中文件名为SonB.java
定义调用类
public class MainB{
public static void main(String[]args){
SonB.IsSon(); //调用sonB的IsSon方法
}
}
将其保存在D:\JavaTest2 中文件名为MainB.java,其含有入口是main()函数。
编译源码 javac MainB.java
运行 java MainB
参见下图:
★相同包不同类调用
在此仅据介绍实例方式
先定义一个类
package org.cn; //定义包
public class SonC{
public void IsSon(){
System.out.println("调用sonC类中的IsSon成员方法成功");
}
}
将其保存在D:\JavaTest3 中,文件名为SonC.java
定义调用类
package org.cn; //定义包
public class MainC{
public static void main(String[]args){
SonC son = new SonC(); //实例化SonC类
son.IsSon(); //通过实例化的sonC对象调用IsSon方法
}
}
将其保存在D:\JavaTest3 中文件名为MainC.java,其含有入口是main()函数。
打开cmd,使用cd /d D:\JavaTest3 切换路径
编译源码 javac -d . *.java
运行 java org.cn.MainC
参见下图:
★不同包不同类的调用
在此仅据介绍实例方式
先定义一个类
package org.aa; //定义包
public class SonC{
public void IsSon(){
System.out.println("调用sonC类中的IsSon成员方法成功");
}
}
将其保存在D:\JavaTest4 中,文件名为SonC.java
定义调用类
package org.bb; //定义包
import org.aa.SonC; //导入到类的名称
public class MainC{
public static void main(String[]args){
SonC son = new SonC(); //实例化SonC类
son.IsSon(); //通过实例化的sonC对象调用IsSon方法
}
}
将其保存在D:\JavaTest4 中文件名为MainC.java,其含有入口是main()函数。
打开cmd,使用cd /d D:\JavaTest4 切换路径
编译源码 javac -d . *.java
运行 java org.bb.MainC
参见下图:
参考
轻松实现跨包调用 https://developer.aliyun.com/article/740877