2016-01-10 2 views
0

Моя цель - протестировать защищенный уровень доступа, защищенный, в определении защищенный член может быть доступен через любой класс из одного и того же пакета и любого подкласса в любом пакете.Расширение суперкласса из разных пакетов

Пусть у меня есть класс test1 в Java проекта 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; 
    } 
} 

И у меня есть еще один класс test2 в Java проекта test2, так как они из разных проектов Java, так что они из разных пакетов

public class test2 extends test { 

} 

Но есть ошибка в test2, он говорит: «Тест не может быть разрешен для типа», как я могу это исправить? Должен ли я писать некоторые импортные заявления? Как?

ответ

2

Как и при любом использовании a class from another package, вы можете использовать оператор импорта:

import com.foo.bar.whatever.test; 

или полностью квалифицировать имя класса:

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

Кстати, классы Java традиционно начинаются с прописной буквы , т.е. Test и Test2, а не test и test2.

+0

что Foo? и бар? – sevenyunan

+0

Это просто пример. Я понятия не имею, что вы имеете полное имя пакета. Например, 'import java.util.ArrayList;' - это то, как вы импортируете 'ArrayList' из пакета' java.util'. –

-1

Вы должны иметь оба класса в одном пакете и написать заявление, как это в самом начале вашей: файл классов

package projectname.packagename; 

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

public class test2 extends test { 
... 
} 
+0

1) Вы не всегда можете перемещать классы в один и тот же пакет, либо логически, либо практически. Например, как бы вы расширили 'java.util.AbstractList' этим методом; 2) Нет необходимости импортировать классы из одного пакета. –

 Смежные вопросы

  • Нет связанных вопросов^_^