Dědění java konstruktory – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dědění java konstruktory – Java – Fórum – Programujte.comDědění java konstruktory – Java – Fórum – Programujte.com

 

elix
~ Anonymní uživatel
1 příspěvek
12. 10. 2012   #1
-
0
-

Prosím zasekl jsem se na příkladu, poraďte nežádám kód chci spíš vědět co se po mě chce.

Vytvorte abstraktni třídu Account s proměnou String username public a id protected.

Vytvořte třídu MyAccount, která bude dědit ze třídy Account.

Konstruktor třídy MyAccount naplní proměnou id třídy Account vždy jedinečnou hodnotou.

Dále bude vaše třída obsahovat jednu proměnou třídy veřejnou (s názvem: verejna) a jednu implicitní (s názvem:
implicit).

Dále bude vaše třída obsahovat jednu proměnou instance chráněnou (s názvem: chranena) a jednu soukromou (s
názvem: soukroma).

Nakonec vytvořte metodu třídy s názvem novaInstance() která vaši třídu vytvoří a vrátí.

public abstract class Account {

public final String username;

protected int id;

protected Account(String username){

this.username=username;

}

// Tady odsud si uz nejsem jistej

public abstract class MyAccount extends Account {
	
//???	
	public MyAccount(int id, string username){
		super(username);
		this.id=id;
	}
	
	
}
//???
Nahlásit jako SPAM
IP: 195.178.73.–
ingiraxo+15
Grafoman
12. 10. 2012   #2
-
0
-

tyhle zadaní ve škole jsou jak za trest většinou :D

kdybych to měl dělat, tak bych to pochopil asi takto nejak 

public abstract class Account {
    
    public String username;
    protected static int id = 0;
}

public class MyAccount extends Account {
    
    public MyAccount verejna;
    MyAccount implicit;
    protected MyAccount chranena;
    private MyAccount soukroma;
    
    public MyAccount() {
        id++;
    }
    
    public MyAccount novaInstance() {
        return new MyAccount();
    }
}

s tou jedinečnou hodnotou u ID je bud chyba v zadání nebo chyták, v kazdym pripade tu jedinecnou hodnotu zajistis tak, jak jsem teď napsal.. a nikde neni napsáno, ze konstruktor má být všude a má obsahovat i username :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
liborb
~ Redaktor
+18
Guru
15. 10. 2012   #3
-
0
-

Jenom taková drobnost. Proměnná id je statická, takže společná všem, tudíž její hodnota nebude jedinečná pro danou instanci, ale bude stejná pro všechny instance. K jedinečnosti se lze dopracovat mírnou úpravou s pomocí počítadla instancí:

protected int id = 0;
private static int count = 0;


....


public MyAccount() {
        id = ++count;
}
Nahlásit jako SPAM
IP: 188.75.135.–
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #4
-
0
-

#3 liborb
Liborb díky moc ;) a předchozímu přispěvovateli též.

Nahlásit jako SPAM
IP: 195.178.73.–
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #5
-
0
-

#4 Erik
/**
  * Tento konstruktor přibírá hodnotu vašeho username z potomka.
  *
  * @param fromDescendant
  *            username
  */protected Constructor(String username) {
   this.username = username;

a tohle se iplementuje jak k tomu prosím ? to se musí v konstruktoru potomka zavolat to super ne ?

Nahlásit jako SPAM
IP: 195.178.73.–
ingiraxo+15
Grafoman
16. 10. 2012   #6
-
0
-

pokud něco voláš z rodiče, tak použiješ vždy super.. chová se to úplně stejně jako this, jen s tím rozdílem, ze ukazuje na třídu rodiče

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #7
-
0
-

   



public abstract class MyConstructor extends Constructor {
	
	public MyConstructor verejna;
		   MyConstructor implicit;
	protected MyConstructor chranena;
	private MyConstructor soukroma; // tady to hlasi chybu
	
	
	public MyConstructor(String fromDescent){
		super(fromDescent);
		id = ++count;
	}
	
	public MyConstructor novaInstance() {
		return new MyConstructor();
	
}
}
	
-------------------------------------------------------------------------------

public abstract class MyConstructor extends Constructor {
	
	public MyConstructor verejna;
		   MyConstructor implicit;
	protected MyConstructor chranena;
	private MyConstructor soukroma;
	
	
	public MyConstructor(String fromDescent){
		super(fromDescent);
		id = ++count;
	}
	
	public MyConstructor novaInstance() {
		return new MyConstructor();  // tady to hlasi chybu
	
}
}
	
	

Prosím v čem je chyba ?

Nahlásit jako SPAM
IP: 195.178.73.–
ingiraxo+15
Grafoman
16. 10. 2012   #8
-
0
-

protože MyConstructor je abstraktní třída

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #9
-
0
-

   

public abstract class Constructor {
	

		public final String fromDescendant;
		
		protected int id = 0;
		protected static int count = 0;

		/**
		 * Tento konstruktor přibírá hodnotu vašeho loginu z potomka.
		 * protected static int id = 0;
		 * @param fromDescendant
		 * login studenta
		 */
		protected Constructor(String fromDescendant) {
			this.fromDescendant = fromDescendant;
		}

	}

ja zapomel vložit ten předchoží kód
Nahlásit jako SPAM
IP: 195.178.73.–
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #10
-
0
-

abstract jsem vymazal a uz do nadavá pouze na tu metodu novaInstance

Nahlásit jako SPAM
IP: 195.178.73.–
ingiraxo+15
Grafoman
16. 10. 2012   #11
-
0
-

neivdim důvod proč by to mělo hazet chybu.. to hází přesně co za chybu?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Erik
~ Anonymní uživatel
101 příspěvků
16. 10. 2012   #12
-
0
-

ingiraxo díky už jsem na to přišel chyběl mi parametr string v konstruktoru

Nahlásit jako SPAM
IP: 195.178.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

C# konstruktory — založil Kartmen

Konstruktory — založil robin

Třída, konstruktory — založil JakeBuchar

Dědění — založil Yety

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý