class Person private String name public PersonString name
Παράδειγμα class Person { private String name; public Person(String name){ this. name = name; } Constructor: μια μέθοδος με το ίδιο όνομα όπως και η κλάση και χωρίς τύπο (ούτε void) Αρχικοποιεί την μεταβλητή name public void speak(String s){ System. out. println(name+": "+s); } } public class Hello. World 3 { public static void main(String[] args){ Person alice = new Person("Alice"); alice. speak("Hello World"); } } Constructor: καλείται όταν δημιουργείται το αντικείμενο με την new και μόνο τότε
class Date { private int day; private int month; private int year; private String[] month. Names = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; public Date(int day, int month, int year) { if (day <= 0 || day > 31 || month <= 0 || month >12 ){ return; } this. day = day; this. month = month; this. year = year; } public void print. Date() { System. out. println(day + " " + month. Names[month-1] + " " + year); } } class Date. Example { public static void main(String args[]) { Date my. Date = new Date(17, 3, 2013); my. Date. print. Date(); } }
class Date { private int day; private int month; private int year; private String[] month. Names = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; public Date(int day, int month, int year) { if (check. Day(day)){ this. day = day; } if (check. Month(month)){ this. month = month; } this. year = year; } private boolean check. Day(int day){ if (day <= 0 || day > 31 ) {return false; } return true; } Ο constructor μπορεί να καλεί και άλλες μεθόδους που κάνουν κάποια από τη δουλειά που χρειάζεται private boolean check. Month(int day){ if (month <= 0 || month >12) {return false; } return true; } public void print. Date() { System. out. println(day + " " + month. Names[month-1] + " " + year); } }
Παράδειγμα class Car { private int position=0; private int ACCELERATOR = 2; Η εκτέλεση αυτών των αρχικοποιήσεων γίνεται πριν εκτελεστούν οι εντολές στον constructor public Car(int position){ this. position = position; } public void move(int delta){ position += ACCELERATOR * delta ; } } class Moving. Car 8 { public static void main(String args[]){ Car my. Car 1 = new Car(1); Car my. Car 2 = new Car(-1); my. Car 1. move(-1); my. Car 2. move(1); } } H τελική τιμή του position θα είναι αυτή που δίνεται σαν όρισμα
class Student { private String name = "John Doe"; private int AM = 1000; public Student(String name, int AM){ this. name = name; this. AM = AM; } public void print. Info(){ System. out. println(name + " " + AM); } public static void main(String[] args){ Student a. Student = new Student("Kostas", 1001); a. Student. print. Info(); } }
Guest List class Guest. List { private String[] names; private boolean[] confirm; int number. Of. Guests; Δεσμεύει μνήμη για τους πίνακες με τα ονόματα των καλεσμένων και τις επιβεβαιώσεις public Guest. List(int number. Of. Guests) { this. number. Of. Guests = number. Of. Guests; names = new String[number. Of. Guests]; confirm = new boolean[number. Of. Guests]; get. Names. From. Input(); Καλεί μια άλλη μέθοδο για } να πάρει τις τιμές private void get. Names. From. Input(){. . . } }
class Car { private int position; public Car(int position){ this. position = position; } public void move(){ position ++ ; } public void move(int delta){ position += delta ; } } class Moving. Car 9 { public static void main(String args[]){ Car my. Car = new Car(1); Μετακινεί το my. Car. move(); my. Car. move(-1); Μετακινεί το } } όχημα μια θέση μπροστά όχημα μια θέση πίσω
class Car { private int position; Υπερφόρτωση δημιουργών public Car(){ this. position = 0; } public Car(int position){ this. position = position; } public void move(){ position ++ ; } public void move(int delta){ position += delta ; } } class Moving. Car 10 { public static void main(String args[]){ Car my. Car 1 = new Car(1); my. Car 1. move(); Car my. Car 2= new Car(); my. Car 2. move(-1); } }
to. String() Για να μπορούμε να μετατρέψουμε τον ακέραιο σε String ορίζουμε το position ως Integer (wrapper class) class Car { private Integer position = 0; public Car(int position){ this. position = position; } public void move(int delta){ position += delta ; } public String to. String(){ return position. to. String(); } } H Java περιμένει αυτό το συντακτικό για τον ορισμό της to. String Μετά καλούμε τη συνάρτηση to. String() της κλάσης Integer Χρησιμοποιούμε τις my. Car 1, my. Car 2 σαν String. Καλείται η μέθοδος to. String() αυτόματα class Moving. Car. To. String { public static void main(String args[]){ Car my. Car 1 = new Car(1); Car my. Car 2 = new Car(0); my. Car 2. move(2); System. out. println(“Car 1 is at “ + my. Car 1 + “ and car 2 is at “ + my. Car 2); } } Ισοδύναμο με το: System. out. println(“Car 1 is at “ + my. Car 1. to. String() + “ and car 2 is at “ + my. Car 2. to. String ());
to. String() class Car { private int position = 0; public Car(int position){ this. position = position; } public void move(int delta){ position += delta ; } Ένας άλλος τρόπος να μετατρέψουμε ένα int σε String public String to. String(){ return “”+position; } } class Moving. Car. To. String { public static void main(String args[]){ Car my. Car 1 = new Car(1); Car my. Car 2 = new Car(0); my. Car 2. move(2); System. out. println(“Car 1 is at “ + my. Car 1 + “ and car 2 is at “ + my. Car 2); } }
class Car { private int position = 0; H Java περιμένει αυτό το συντακτικό για τον ορισμό της equals public Car(int position){ this. position = position; } public void move(int delta){ position += delta ; } public boolean equals(Car other){ if (this. position == other. position){ return true; } return false; } } Χρήση της return για έλεγχο ροής Ένα παράδειγμα αντικειμένου ως παράμετρος συνάρτησης Αν και το πεδίο position είναι private μπορούμε να το προσπελάσουμε γιατί είμαστε μέσα στην κλάση Car. Μία κλάση μπορεί να προσπελάσει τα ιδιωτικά μέλη όλων των αντικειμένων της κλάσης class Moving. Car. Equals { public static void main(String args[]){ Car my. Car 1 = new Car(2); Car my. Car 2 = new Car(0); my. Car 2. move(2); if (my. Car 1. equals(my. Car 2)){ System. out. println("Collision!"); } Κλήση της equals } πρόγραμμα } στο
class Person { private String name; public Person(String name){ this. name = name; } public String to. String(){ return name; } public boolean equals(Person other){ return this. name. equals(other. name); } } public class Two. Persons { public static void main(String[] args){ Person alice = new Person("Alice"); Person bob = new Person(“Bob”); if (!alice. equals(bob)){ System. out. println(“There are two different persons: “ + alice + “and “ + bob); } } }
class Person{ private String first. Name; private String last. Name; public Person(String first. Name, String last. Name){ this. first. Name = first. Name; this. last. Name = last. Name; } public String to. String(){ return first. Name + “ “ + last. Name; } public boolean equals(Person other){ return (this. first. Name. equals(other. first. Name)) && (this. last. Name. equals(other. last. Name)); } } public class Two. Persons { public static void main(String[] args){ Person alice = new Person("Alice Wonderland"); Person bob = new Person(“Bob Sfougkarakis”); if (!alice. equals(bob)){ System. out. println(“There are two different persons: “ + alice + “and “ + bob); } } }
class Person { private String name; class Car { private int position = 0; private String driver. Name; public Person(String name){ this. name = name; } public Car(int position, Person driver){ this. position = position; driver. Name = driver. get. Name(); } public String get. Name(){ return name; } public String to. String(){ return driver. Name + " " + position; } } } class Moving. Car. Driver { public static void main(String args[]) { Person alice = new Person("Alice"); Car my. Car = new Car(1, alice); System. out. println(my. Car); } }
class Traffic. Light { private String[] colors = {“green”, “yellow”, “red”}; private int current = 0; class Car { private int position = 0; public int print. Position() { System. out. println(“Car at “+ position); } public int print. Status() { System. out. println(“Light is “ + colors[current]); } public void move(Traffic. Light light){ if (!light. is. Red()){ position ++; } } public void change(){ current = (current+1)%3 } public boolean is. Red(){ if (current == 2) return true; return false; } } } class Traffic. Simulation { public static void main(String[] args){ Traffic. Light light = new Traffic. Light(); Car my. Car = new Car(); for (int i = 0; i < 10; i ++){ light. print. Status(); my. Car. print. Position(); my. Car. move(light); light. change(); } } }
class Person { private String name; class Car { private int position = 0; private Person driver; public Person(String name){ this. name = name; } public Car(int position, Person driver){ this. position = position; this. driver = driver; } public String get. Name(){ return name; } public String to. String(){ return driver. get. Name() + " " + position; } } } class Moving. Car. Driver { public static void main(String args[]) { Person alice = new Person("Alice"); Car my. Car = new Car(1, alice); System. out. println(my. Car); } }
class Person { private String name; class Car { private int position = 0; private Person driver; public Person(String name){ this. name = name; } public Car(int position, String name){ this. position = position; this. driver = new Person(name); } public String get. Name(){ return name; } public String to. String(){ return driver. get. Name() + " " + position; } } } class Moving. Car. Driver { public static void main(String args[]) { Car my. Car = new Car(1, “Alice”); System. out. println(my. Car); } } Το αντικείμενο δημιουργείται μέσα στον constructor
- Slides: 31