Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Protection

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Protection
Имя
Сообщение << Старые топики   Новые топики >>
Protection - 2011-11-30 01:32:41.426666   
kenny_CK

Сообщений: 5
Оценки: 0
Присоединился: 2011-11-11 00:21:29.553333
Ниже приведен пример, в котором представлены все допустимые комбинации модификаторов уровня доступа. Но при выполнении ругается - отсутствует главный метод класса, а также указывает на - private protected int n_pripro = 4; пишет "illegal combination of modifiers: private and protected". Оболчка NetBeans. В чем проблема?


package mypackage;


public class Protection {

int n = 1;

private int n_pri = 2;

protected int n_pro = 3;

private protected int n_pripro = 4;

public int n_pub = 5;

public Protection() {

System.out.println("base constructor");

System.out.println("n = " + n);

System.out.println("n_pri = " + n_pri);

System.out.println("n_pro = " + n_pro);

System.out.println("n_pripro = " + n_pripro);

System.out.println("n_pub = " + n_pub);

}

}

class Derived extends Protection {

Derived() {

System.out.println("derived constructor");

System.out.println("n = " + n);

// только в классе

// System.out.println("n_pri = " + n_pri);

System.out.println("n_pro = " + n_pro);

System.out.println("n_pripro = " + n_pripro);

System.out.println("n_pub = " + n_pub);

}

}

class SamePackage {

SamePackage() {

Protection p = new Protection();

System.out.println("same package constructor");

System.out.println("n = " + p.n);

// только в классе

// System.out.println("n_pri = " + p.n_pri);

System.out.println("n_pro = " + p.n_pro);

// только в классе и подклассе

// System.out.println("n_pripro = " + p.n_pripro):

System.out.println("n_pub = " + p.n_pub);

}

}
Post #: 1
RE: Protection - 2011-11-30 01:44:37.153333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
1) Нету у программы точки входа, не знает компилятор, откуда начинать её.
public static void main(String[] args) { /*Код, использующий классы*/ }

2) модификатор доступа всегда один - или private, или protected
Post #: 2
RE: Protection - 2011-11-30 01:52:32.250000   
kenny_CK

Сообщений: 5
Оценки: 0
Присоединился: 2011-11-11 00:21:29.553333
уровни доступа: "учебник"
если вы хотите, чтобы элемент был доступен только подклассам, причем независимо от того, находятся ли они в данном пакете или нет — используйте комбинацию private protected.


В исходном коде первого пакета определяется три класса: Protection, Derived и SamePackage. В первом из этих классов определено пять целых переменных — по одной на каждую из возможных комбинаций уровня доступа. Переменной n приписан уровень доступа по умолчанию, n_pri — уровень private, n_pro — protected, n_pripro — private protected и n_pub — public. Во всех остальных классах мы пытаемся использовать переменные первого класса. Те строки кода, которые из-за ограничения доступа привели бы к ошибкам при трансляции, закомментированы с помощью однострочных комментариев (//) — перед каждой указано, откуда доступ при такой комбинации модификаторов был бы возможен. Второй класс — Derived — является подклассом класса Protection и расположен в том же пакете р1. Поэтому ему доступны все перечислен­ные переменные за исключением n_pri. Третий класс, SamePackage, расположен в том же пакете, но при этом не является подклассом Protection. По этой причине для него недоступна не только переменная n_pri, но и n_pripro, уровень доступа которой — private protected.

*Где должна быть точка входа?
Post #: 3
RE: Protection - 2011-11-30 23:20:57.486666   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
первый раз вижу комбинированный модификатор)) netbeans, похоже, тоже) попробуй без private все-таки) и как правильно сказал Genco, должна быть точка входа, она же функция main()…
т.е. где-то должен быть код типа этого

public static void main(String[] args) { Protection pr = new Protection(); Derived drv = new Derived(); // и т.д. }
Post #: 4
RE: Protection - 2011-12-01 02:36:33.390000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
http://www.math.rsu.ru/mexmat/pmp/student/book/Chapter05.html
http://www.intelserv.ru/bookinfo-nouton-p-shildt-g/nouton-p-shildt-g-java-2-naibolee-polnoe-rukovodstvo-razdel-2.html?start=20

Ну вот 2 случайные ссылки на случай, если я не только не знаю яву, но и неправильно о ней догадываюсь. Очепятка в "учебнике", protected ставь))
Post #: 5
RE: Protection - 2011-12-01 12:56:40.753333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Кури: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Protection







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.