Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » NimnuL 11:25
 » faf 11:24
 » NWN 11:22
 » SebaSTS 11:21
 » tuptun 11:21
 » Sherif 11:20
 » Matti 11:18
 » rrafaell 11:17
 » rooter666 11:13
 » Flo 11:12
 » JE Jacaw 11:07
 » bajbusek 11:02
 » Visar 11:00
 » VP11 10:58
 » PeKa 10:52
 » gigamiki 10:52
 » Lucyferiu 10:50
 » biEski 10:49
 » elliot_pl 10:49
 » Liu CAs 10:47

 Dzisiaj przeczytano
 41145 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

konstruktory w JAVA , Ometoch 3/06/03 11:16
Witam. Mam problem. Tworzę swoją klasę np. MyClass1, w jej ciele umieszczam konstruktora z parametrami np.
public void MyClass1(int a, int b) { ... }
W programie deklaruje zmienną :
MyClass1 myCl1;
a w init() konstruuje obiekt:
myCl1=new MyClass1(3,6);
po kompilacji wyskakuje błąd, że konstruktor ma za dużo parametrów; natomiast jak zmienie na:
myCl1= new MyClass1();
to jest ok. O co chodzi??
Wiem że w C++ w ciele umieszczało się konstruktory i destruktory. W Javie nie ma destruktorów ale chyba składnia klasy pozostała podobna.

Najgorzej jest wiedzieć, że coś nie
chodzi jak powinno i nie wiedzieć
jak to naprawić !

  1. glowy nie dam, ale w C++ konstruktor (i destruktor) nie moga zwracac wartosci , bwana 3/06/03 11:32
    Jesli w Javie jest tak samo, to byc moze kompilator uznal, ze

    public void MyClass1(int a, int b) { ... }

    jest definicja metody, a nie konstruktora (bo jest zwracana wartosc). W ten sposob kompilator wie (mysli:-D), ze jest domyslny, automatyczny konstruktor public MyClass1()oraz _metoda_ public void MyClass1(int a, int b) { ... }.

    Tak strzelam, ale moze to to (Java jest przeciez b. podobna do C++)

    "you don't need your smile when I cut
    your throat"

  2. odp: konstruktory w JAVA , Stone 3/06/03 11:39
    pisząc public void MyClass1(int a, int b) nie tworzysz konstruktora tylko metodę, napisz public MyClass1(int a, int b){}
    i powinno być dobrze. Gdy piszesz myCl1= new MyClass1(); tworzony jest obiekt klasy MyClass1 na podstawie konstruktora domyślnego MyClass1(). Jeżeli zdefiniujesz konstruktor MyClass1(int a, int b), i będziesz chciał używaż konstruktora domyślnego MyClass1() to będziesz musiał go skonfigurować tzn MyClass1(){ /* ciało konstruktora */; }

    Pozdrawiam

    Stone aka S1one

    1. jeszcze jedno kończąc wątek.. , Ometoch 3/06/03 11:56
      nie wiem czy dobrze wnioskuje ale skoro wywołanie: costam=new CosTam() tworzy obiekt na podstawie domyślnego konstruktora to czy sama deklaracja:
      CosTam costam; nie czyni tego samego? (tzn. wywołuje domyślny konstruktor?)

      Najgorzej jest wiedzieć, że coś nie
      chodzi jak powinno i nie wiedzieć
      jak to naprawić !

      1. konstruktor wywolywany jest _automatycznie_ wylacznie przy korzystaniu z operatora new , bwana 3/06/03 12:01
        jesli masz przeladowany konstruktor, to zostanie wywolany ten, do ktorego pasuje zestaw podanych argumentow.

        "you don't need your smile when I cut
        your throat"

      2. odp: jeszcze jedno kończąc wątek.. , Stone 3/06/03 12:13
        z reguły pisze się tak CosTam costam = new CosTam(); czyli: TypObiektu nazwaNowoTworzonego obiektu = operator new KonstruktorObiektu();
        Czyli w odpowiedzi na twoje pytanie: deklaracja CosTam costam nie tworzy obiektu, potrzebna jest jeszcze deklaracja new CosTam(), bądz inny konstruktor;

        Pozdrawiam

        Stone aka S1one

        1. a dla pelnego dookreslenia - nie deklaracja "new costam()" a definicja , bwana 3/06/03 12:15
          bo z "new" to juz definicja:)

          "you don't need your smile when I cut
          your throat"

          1. tak w pełni się zgadzam , Stone 3/06/03 12:17
            mój błąd :)

            Pozdrawiam

            Stone aka S1one

    2. nie napisales niczego ponad to co juz bylo napisane:-D , bwana 3/06/03 11:59
      ...

      "you don't need your smile when I cut
      your throat"

      1. poprostu byłaś szybsza :P , Stone 3/06/03 12:07
        ...

        Pozdrawiam

        Stone aka S1one

  3. dzięki wielkie! , Ometoch 3/06/03 11:46
    Teraz już czaje o co chodzi. Sugerowałem się tym że w ciele klasy nie może być metody o takiej samej nazwie jak klasa i że tylko konstruktory mają taką samą nazwę.
    Pozdrowienia.

    Najgorzej jest wiedzieć, że coś nie
    chodzi jak powinno i nie wiedzieć
    jak to naprawić !

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL