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

参见下图:

参考

JAVA不同包(package)的类之间如何调用
https://blog.csdn.net/jingzi123456789/article/details/69536524
Java中不同包下类与类之间的访问 https://cloud.tencent.com/developer/article/1353901
轻松实现跨包调用 https://developer.aliyun.com/article/740877

附录

java程序的组织结构 https://blog.csdn.net/cnds123/article/details/80446981


版权声明:本文为cnds123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cnds123/article/details/123930365