【问题标题】:Extend a superclass from different packages从不同的包扩展超类
【发布时间】:2016-04-15 04:24:47
【问题描述】:

我的目标是测试访问级别修饰符protected,在定义上,protected 成员可以通过同一个包中的任何类和任何包中的任何子类访问。

假设我在 java 项目 test1 中有一个 test1 类

public class test {
    protected int id;
    protected String Name;
    private int age;

public test(int id, String name) {
    this.id = id;
    this.Name = name;
    this.age = 10;
    }

public void setAge() {
    this.age = 20;
    }
}

我在java项目test2中有另一个类test2,因为它们来自不同的java项目,所以它们来自不同的包

public class test2 extends test {

}

但是在test2中有一个错误,它说“test cannot be resolve to a type”,我该如何解决这个问题?我应该写一些导入语句吗?怎么样?

【问题讨论】:

    标签: java import package protected


    【解决方案1】:

    a class from another package 的任何使用一样,您可以使用导入语句:

    import com.foo.bar.whatever.test;
    

    或完全限定类名:

    public class test2 extends com.foo.bar.whatever.test {
    

    顺便说一下,Java 类通常以大写字母开头,即TestTest2,而不是testtest2

    【讨论】:

    • 什么是 foo?和酒吧?
    • 这只是一个例子。我不知道你完全限定的包名称是什么。例如,import java.util.ArrayList; 是您从 java.util 包中导入 ArrayList 的方式。
    【解决方案2】:

    您应该将两个类放在一个包中,并在类文件的最开头编写如下语句:

    package projectname.packagename; 
    
    public class test {
    ...
    }
    
    package projectname.packagename;  
    import projectname.packagename.test; 
    
    public class test2 extends test {
    ...
    }
    

    【讨论】:

    • 1) 无论是逻辑上还是实际上,您都不能总是将类移动到同一个包中。例如,您将如何通过这种方法扩展java.util.AbstractList; 2) 不需要从同一个包中导入类。
    猜你喜欢
    • 2014-04-05
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多