gpt4 book ai didi

java - 如何在从另一个包中的另一个类继承 protected 成员的包中编译和运行一个类

转载 作者:行者123 更新时间:2023-11-29 03:32:05 25 4
gpt4 key购买 nike

这是我放在名为 certification 的目录中的第一个代码

package certification;
class Parent{
protected int x=9;//protected access
}

这是我的其他代码,放在一个名为 other 的单独目录中

package other;
import certification.Parent;
class Child extends Parent{
public void testIt(){
System.out.println("x is" + x);
}
public static void main(String args[]){
Child n=new Child();
n.testIt();
}
}

但问题是每当我尝试编译 Child 类时,编译器都会给出以下错误Child.java:2: 包认证不存在

import certification.Parent;
^

Child.java:3: 找不到符号符号:class Parent

class Child extends Parent{
^

Child.java:5: 找不到符号符号 : 变量 x位置:class other.Child

System.out.println("x is" + x);
^

请帮我改正并正常运行。诚挚的问候。

最佳答案

假设你的文件夹结构是这样的

sources/certification/Parent.java
sources/other/Child.java

此外,将您的Parent 类设置为public,因为我们正试图在包外访问它。此外,子类应该调用 n.testIt() 而不是 n.voidTestIt()。 void 是返回类型。

类(class)将是

package certification;
public class Parent{
protected int x=9;//protected access
}


package other;
import certification.Parent;
class Child extends Parent{
public void testIt(){
System.out.println("x is" + x);
}
public static void main(String args[]){
Child n = new Child();
n.testIt();
}
}

按照以下步骤操作。

  • 使用 cd sources 导航到 sources 目录
  • 首先编译 Parent 类,因为它是 Child 类所必需的,使用命令 javac certification/Parent.java
  • 然后使用 javac -classpath 编译子类。其他/Child.java。这里 -classpath 是告诉 javac 命令从哪里选择 Child.java 所需的类的选项。 是当前目录,它是我们的类路径,即 sources
  • 编译成功后,使用java other.Child运行Child类。这里我们使用 Child 的完全限定名称。

只需导航到您的 C 盘并执行此操作

C:\>cd sources

C:\sources>javac certification/Parent.java

C:\sources>javac -classpath . other/Child.java

C:\sources>java other.Child
x is9

C:\sources>

理想情况下,您应该始终从目录结构的空间编译和启动 java 类。java文件中的包名是目录结构。在编译时,它们被视为 java 文件,因此在编译时使用目录结构,例如认证/Parent.java
。但是当类被编译时,类文件是使用包名来标识的。因此,请使用根目录中的完全限定名称,即包结构开始的位置。在我们的示例中,sources 是目录,certificationother 是包。所以这些类应该被称为 certification.Parentother.Child

关于java - 如何在从另一个包中的另一个类继承 protected 成员的包中编译和运行一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com