Java

  • Креатор на темата Креатор на темата deXterche
  • Време на започнување Време на започнување
Проблемот е поврзан со Nested Classes односно со креирањето на објект од static Inner или само inner објект. Ако може некој да ми ги објасни овие два реда код
Код:
OuterClass.StaticNestedClass nestedObject =
    [B]new OuterClass.StaticNestedClass();[/B]
и
Код:
OuterClass.InnerClass innerObject =outerObject.new InnerClass();

Ме збунува креирањето на објектите од статичната внатрешна класа и од обичната
Во принцип е многу проста работа но многу лесно може да збуни...
Да предпоставам дека не знаеш што е static и да објаснам што е : Кратко јасно знаеш дека во јава се е со класи и затоа ако пред некоја променлива, функција,класа стои static тоа значи дека таа променлива, функција или класа постои и може да се повика-користи без да постои објект од таа класа каде што се наоѓа таа променлвиа, функција или класа, исто така истите вредности што ги има таа променлива, функција или класа важи за сите направени објекти од таа класа.

Е сега тука е момент што значи дека внатрешната static класа ние може да ја користиме без да постои надворешната главна класа. И затоа ни е дозволено ова:
Код:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
Се пишува OutterClass.StaticNestedClass бидејќи внатрешната класа физички е внатре во OutterClass па тоа некако како патека кажува каде се наоѓа...нека не те буни.


А сега за внатрешните класи кои што не се static важи и истото правило како и за сите други променливи, функции,..а тоа правило е дека постојат и можат да се користат само ако постои објект од надворешната класа. глуп пр:
Код:
    public class nekojaKlasa{
  public int x;
}
Ја од некоја main функција не можам туку така да напишам nekojaKlasa.x и да пристапам до таа променлива затоа што таа променлвиа ќе постои само ако претходно имам крериано објект од таа класа : nekojaKlasa obj = new nekojaKlasa();..потоа можам obj.x

Истото е и со внатрешната класа, прво морам да направам објект од надворешната класа:
Код:
OuterClass outerObject = new OuterClass ();
За потоа преку објект од надворешната класа да можам да пристапам во внатрешната класа и да направам објект од тоа( :icon_lol: )
Код:
OuterClass.InnerClass innerObject =outerObject.new InnerClass();
Се надевам малце појасно е :icon_lol:


Despod

Предпоставув дека веќе знаеш тоа...секој счучај alt+enter на тој ред кај што јавува "грешка" ќе даде предлог за решение... или ctrl+shift+i да импортира се што треба :)
 
  • Ми се допаѓа
Reactions: Tan
За static појасно ми е само оти кај овие non static се креира објект вака : outerObject.new InnerClass();
а не можи:
new outerObject.InnerClass()
и фала за одговорот...
 
Па бидјејќи објектот што се креира е внатре во надворешниот објект...малце чудно е но таква е синтаксата... за да се знае дека е внатрешна класа..
 
Има ли некој предлог за семинарска или готов код, ми треба за на факс. До сега имаме изучено наследување на класи, имплементација, гетери и сетери,конструктори,колекции,итерација,множества,врапер класи,абстрактни класи, интерфејс,исклучоци,стримови,xml датотека.
Не го разбирам јава програмскиот јазик, почетник сум, затоа барам помош.
 
Има ли некој предлог за семинарска или готов код, ми треба за на факс. До сега имаме изучено наследување на класи, имплементација, гетери и сетери,конструктори,колекции,итерација,множества,врапер класи,абстрактни класи, интерфејс,исклучоци,стримови,xml датотека.
Не го разбирам јава програмскиот јазик, почетник сум, затоа барам помош.
Па ти како што наброја, цел предмет сте го поминале. Сето ова што го наброја е доволно да се направи една, да не речам солидна апликација :) Ако од ова поминатот ти незнаеш ништо едноставно откажи се земи ливчиња и препишувај. А во најдобар случај земи материјал и почни да учиш баш како што ти се подредени почнувајќи од објекти класи... па до стримови датотеки xml.
Пробај нешто почни се надевам каде ќе застанеш има овде солидни луѓе ќе ти помогнат.
Не сваќај дека ти солам памет и се правам паметен и голем програмер, ова ти е за твое добро. Размисли си ти па ако одлучиш, дека немаш желба да учиш барај ме преку ПП ќе ти пратам.

За идеа: Направи некоја апликација пр.Каталог за за коли. Да овозможува внесување на тип на кола и перформанси за колата, да ги запишува во xml и txt, да има можност да ги прочита од фајлот и да ги испечати на конзолата :) Во ова задача би требало да ѓи опфатиш сите точки што сте ги поминале :)
 
Код:
File file = new File("pateka");
BufferedReader br = new BufferedReader(new FileReader(file));
String contenet, line;
while((line=br.readLine())!=null){
content +=line;
}
return content;
Помош некој зашо цело време ми враќа null, пробав и со StringBuffer и append на линиите, но никако не можам да го земам целиот текст од еден фајл,
 
Код:
File file = new File("pateka");
BufferedReader br = new BufferedReader(new FileReader(file));
String contenet, line;
while((line=br.readLine())!=null){
content +=line;
}
return content;
Помош некој зашо цело време ми враќа null, пробав и со StringBuffer и append на линиите, но никако не можам да го земам целиот текст од еден фајл,
Код:
File file = new File("pateka");
BufferedReader br = new BufferedReader(new FileReader(file));
String content = new String(), line;
while((line=br.readLine())!=null){
content +=line;
}
return content;

Кога имаш String content = null; и кога правиш додавање на нови стрингови врз истиот, поради тоа што Стринг класата е immutable, null не се заменува со новата содржина, туку новата содржина се додава на постоечката (во случајов нулл) и се формира нов стринг. Поради тоа, а и поради тоа што операцијата + при формирање стрингови е бавна операција (баш поради тоа што при секоја конкатенација се формира комплетно нов стринг заради имутабилноста на Стринг) + операцијата кај стрингови не се препорачува, користи ја StringBuilder класата наместо тоа.
Нешто вака
Код:
        File file = new File("pateka");     
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        StringBuilder sb = new StringBuilder();
        while ((line = br.readLine()) != null) {
            sb.append(line);
            sb.append("\n");
        }     
        return sb.toString();
    }
 
Зошто кога декларирам низа во Netbeans на следниот начин int array[] = new int[100]; ја дава следната грешка the array is only written to never read from ?
 
Не е грешка, туку се прави многу паметен за да не трошиш меморија за џабе...:icon_lol:
 
Случајно некој да не има Eclipse Indigo?
Доколку има и сака може да го сподели ...
Благодарам
 
Дали некој има завршено некој курс за Java во Семос и притоа има полагано за сертификат да сподели искуства и да каже дали вреди за толку пари да се посетува курсот во семос

Sent from my Samsung Galaxy S3 using Tapatalk 2
 
Прелистав 2-3 страни и не видов некој да го имал мојов проблем. Значи кога правам run (користам Eclipse for JAVA), се си е ок со кодот но доле кај конзолата не ми го дава резултатот од програмата туку ми јавува Error: Could not find or load main class "името на фајлот/класата”. Чаре?
 
Прелистав 2-3 страни и не видов некој да го имал мојов проблем. Значи кога правам run (користам Eclipse for JAVA), се си е ок со кодот но доле кај конзолата не ми го дава резултатот од програмата туку ми јавува Error: Could not find or load main class "името на фајлот/класата”. Чаре?
Или немаш метода мејн или не ти е добро напишана.
Треба да гласи вака
Код:
public class ABC {
    public static void main(String[] args) {
    }
}
 

Kajgana Shop

Back
На врв Bottom