public class Demo {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
class Person {
String name;
int yearBorn;
}
k.name = "Karel"; // set name to Karel
String karelsName = k.name; // get name value
Jednotlivé části (jméno, rok narození) nazýváme atributy. |
public class Person {
private String name;
private int yearBorn;
public int getAge() {
return 2018 - yearBorn;
}
public void printNameWithAge() {
System.out.println("I am " + name + " and my age is " + getAge());
}
}
V kódu třídy se nyní objevila klíčová slova public a private .
Nemají vliv na funkcionalitu, ale na "viditelnost",
na možnost či nemožnost z jiného kódu danou třídu nebo její vlastnost vidět a použít.
Logicky public asi (určitě :)) půjde použít vždy a odevšad.
|
Třída představuje strukturu, která má atributy a metody.
definují stav objektu, nesou informace o objektu
public class Demo {
public static void main(String[] a) {
Person jan = new Person();
jan.name = "Jan";
jan.yearBorn = 2000;
System.out.println(jan.name);
System.out.println(jan.yearBorn);
}
}
== Poznámky k příkladu Demo
- Třída Person má vlastnost name a age, to jsou její atributy.
- Objekt jan typu Person má vlastnost name s hodnotou Jan a yearBorn s hodnotou 2000.
- Klíčová slova public
a private
vám z Pythonu nejsou známá, zde v Javě i jiných jazycích označují "viditelnost" položky — jednoduše řečeno, co je veřejné a co soukromé. Soukromé atributy "vidíme" jen z metod třídy, v níž jsou uvedeny.
== Objekt
== Vytváření objektů
Person jan
?Person jan = new Person();
// why not just:
Person jan;
Person jan
) žádný objekt nevytvoří.new
.== Co se děje při vytváření objektů přes new
== Konstruktor
Slouží k "oživení" vytvořeného objektu bezprostředně po jeho vytvoření:
int
, se vytvoří a inicializují samy a konstruktor nepotřebují.new
vytvoří prázdný objekt typu Person a naplní jeho atributy výchozími (default) hodnotami.== Třída a objekt
new
.Person jan = new Person();
== Komplexnější příklad I ==
Následující třída Account
modeluje jednoduchý bankovní účet.
balance
, který reprezentuje množství peněz na účtu.Pak má metody:
add
přidává na účet/odebírá z účtuwriteBalance
vypisuje zůstatektransferTo
převádí na jiný účet== Komplexnější příklad II ==
public class Account { private double balance; // 0.0 public void add(double amount) { balance += amount; } public void writeBalance() { System.out.println(balance); } public void transferTo(Account whereTo, double amount) { balance -= amount; whereTo.add(amount); // whereTo is another account } }
transferTo
pracuje nejen se svým "mateřským" objektem,
ale i s objektem whereTo
předaným do metody.== Komplexnější příklad - definice vs. použití třídy ==
Account.java
.Demo.java
.public static void main(String[] args) { Account petrsAccount = new Account(); Account ivansAccount = new Account(); petrsAccount.add(100.0); ivansAccount.add(20.0); petrsAccount.transferTo(ivansAccount, 30.0); petrsAccount.writeBalance(); // prints 70.0 ivansAccount.writeBalance(); // prints 50.0 }
== println
vs. return
==
public void writeString() {
System.out.println("Sample text"); // writes it
}
public String returnString() {
return "Sample text"; // does not write it
}
/