• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Modyfikatory dostępu Java

Object Storage Arubacloud
0 głosów
206 wizyt
pytanie zadane 4 grudnia 2018 w Java przez mn130496 Gaduła (3,530 p.)

Witam

Jestem studentem informatyki i ostatnio zacząłem naukę Javy. Ostatnio na zajęciach dostałem takie zadanie:

Należy zmodyfikować wcześniej napisany program z listy 5 w taki sposób aby wszystkie pola klasy Samochód były dostępne maksymalnie z poziomu pakietu. Dodatkowo dodać zmienną Lp. która będzie dostępna tylko w klasie AutoKomis.To jest kod tego programu z listy 5: 

package zadania_lab5;
import java.util.Date;
import java.time.Duration;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Samochód {
	//deklaracja zmiennych.
	private String theCarBrand;
	private String model;
	private double capacity;
	private String type;
	private int engine;
	private double yerOfProduction;
	private String dateOfFirstRegistration;
	private double price;
	//Stworzenie konstruktora.
	public Samochód(String theCarBrand, String model,  double capacity, String type, int engine, double  yerOfProduction, String dateOfFirstRegistration, 	double price) {
		this.theCarBrand = theCarBrand;
		this.model = model;
		this.capacity = capacity;
		this.type = type;
		this.engine = engine;
		this.yerOfProduction = yerOfProduction;
		this.dateOfFirstRegistration =dateOfFirstRegistration;
		this.price = price;
	}
//	metody zwracające i ustawiające wartości.
	public void setTheCarBrand(String t) {
		theCarBrand = t;
	}
	public String getTheCarBrand() {
		return theCarBrand;
	}
	public void setModel(String m) {
		model = m;
	}
	public String getModel() {
		return model;
	}
	public void setCapacity(double c) {
		capacity = c;
	}
	public double getCapacity() {
		return capacity;
	}
	public void setType( String ty) {
		type = ty;
	}
	public String getType() {
		return type;
	}
	public void setEngine(int e) {
		engine = e;
	}
	public int getEngine() {
		return engine;
	}
	public void setYerOfProduction(double y) {
		yerOfProduction = y;
	}
	public double getYerOfProduction() {
		return yerOfProduction;
	}
	public void setDateOfFirstRegistration(String d) {
		dateOfFirstRegistration = d;
	}
	public String getDateOfFirstRegistration() {
		return dateOfFirstRegistration;
	}
	public void setPrice(double p) {
		price =p;
	}
	public double getPrice() {
		return price;
	}
//	Metoda sprawdzająca czy Auto ma gwarancje;
	public void czy_ma_gwarancje(String d)
	{
	    LocalDate now = LocalDate.now();
	    LocalDate reg = LocalDate.parse(d, DateTimeFormatter.ISO_LOCAL_DATE);
	 
	    Duration diff = Duration.between(reg.atStartOfDay(), now.atStartOfDay());
	 long minione_dni = diff.toDays();
	    if(minione_dni<=730)
	    {
	        System.out.println("Posiada gwarancję.");
	    }
	    else System.out.println("Nie posiada gwarancji.");
	}
}
	package zadania_lab5;
import java.util.ArrayList;
public class AutoKomis {
	public static void main(String[] args) {
//		tworzę tablicę obiektów klasy Samochód.
		ArrayList<Samochód> listCars = new ArrayList<Samochód>();
//		Dodaję obiekty do listy.
		listCars.add(new Samochód (" Toyota " , " jaris " , 1000, "sedan", 65, 2000, " 2017.11.20 ", 3000 ));
		listCars.add(new Samochód ("Mazda"," 3 ", 1560," kombi ", 105,2004," 2006.11.20 ", 4600));
				listCars.add(new Samochód ("Volkswagen","Beetle", 2000, "Hatchback", 60, 2002, "2002.11.20",5499));
				listCars.add(new Samochód ("Nissan", "Almera", 2000, "sedan",  75, 1999, "2001.11.12", 1900 ));
				listCars.add(new Samochód ("Nissan", "Qashqai", 2500, "sedan", 170, 2008, "2017.11.20", 27900 ));
				listCars.add(new Samochód ("Nissan", "Micra", 1240, "sedan", 65, 2004, "2005.11.20", 7000));
				listCars.add(new Samochód ("Mazda", "6", 2000, "sedan",150 ,2009 , "20011.11.11",20000));
				listCars.add(new Samochód ("BMW", " E39",1500 , " kombi",104 , 2005 , " 2005.11.11", 10000));
				listCars.add(new Samochód ("Nissan", "primera", 2000 , " sedan", 150,2003 , "2004.11.11", 8000));
				listCars.add(new Samochód ("volkswagen", " golf", 1500 , " sedan ", 108 , 1999 , "2000.12.12", 1000));
//				Wyświetlenie tablicy obiektów i wywołanie metody sprawdzającej czy auto ma gwarancje.
				for(Samochód x: listCars) {
				System.out.println("Marka samochodu to: " + x.getTheCarBrand());
				System.out.println("Model samochodu to: " + x.getModel());
				System.out.println("Pojemność samochodu to:" + x.getCapacity() + "cm sześciennych");
				System.out.println("Typ samochodu to: " + x.getType());
				System.out.println("Moc silnika  samochodu to: " + x.getEngine() + " Km");
				System.out.println("Rok produkcji samochodu to: " + x.getYerOfProduction());
				System.out.println("Data pierwszej rejestracji to:" + x.getDateOfFirstRegistration());
				System.out.println("Cena samochodu to: " + x.getPrice() + " zł");
				x.czy_ma_gwarancje("2017-11-20");
	}
}
}

Problem z tym , że nie  wiem o co chodzi w tym zadaniu.To znaczy wiem , że chodzi o te słowa kluczowe public , private itd. ale nie wiem jak się za to zabrać , czytałem trochę w internecie na ten temat ale też średnio to zrozumiałem.Czy ktoś mógłby mi najlepiej na jakimś przykładzie wytłumaczyć jak się zabrać za to zadanie?.Z góry dziękuję.

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 6 grudnia 2018 przez sefir Dyskutant (8,560 p.)
Zasięg dla zmiennych w obrębie pakietu robi się przez niepodanie modyfikatora dostępu, w tym przypadku usuń  słówko private przy zmiennych i będzie ok.
komentarz 6 grudnia 2018 przez RafalS VIP (122,820 p.)

wszystkie pola klasy Samochód były dostępne maksymalnie z poziomu pakietu.

Zadanie juz jest rozwiązane :D 

Private jest "mocniejsze" od package private.

komentarz 6 grudnia 2018 przez sefir Dyskutant (8,560 p.)
Zależy do czego używasz, private daje zasięg w obrębie klasy a default daje private w obrębie pakietu :)

Podobne pytania

+2 głosów
1 odpowiedź 1,179 wizyt
0 głosów
0 odpowiedzi 142 wizyt
0 głosów
1 odpowiedź 605 wizyt
pytanie zadane 15 czerwca 2020 w Systemy operacyjne, programy przez KumberTwo Dyskutant (8,270 p.)

92,572 zapytań

141,422 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...