Java OOP Kavramı — 1
Merhaba,
Bu makalede Sınıflardan ve Nesnelerden söz ediyor olacağım. OOP serisinde adım adım giderek konuyu sizlere anlatmaya çalışacağım. Çok uzun cümleler kurup kafa karışıklığı yaratmadan konuyu sade bir şekilde özetleyelim.
Classes(Sınıflar) ve Nesneler(Objects)
Java programları sınıflardan oluşur. Nesneler ise sınıflardan türerler. Sınıflar class deyimi ile başlarlar.
Sınıflar şunları içerir:
- Veri
- Alt programlar (metot)
New Operatörü
Bu operatör sınıf adı ile birlikte kullanılarak bellekte sınıfa ait yeni bir nesne oluşturulmasını sağlar.
Eğer nesneler new operatörü ile oluşturulmazsa null varsayılan değerini alırlar. Böyle bir durumda uygulamada bu nesnelerin üyelerine erişmeye çalışıldığında java NullPointerException hatası üretir.
Nokta(.) operatörü
Nesneler new operatörü ile oluşturulduktan sonra, nesnelere dışarıdan erişim sağlayabilmek için kullanılır.
Sınıflar ve Nesneler ile İlgili Örneğimiz:
// Person Sınıfımız
class Person{
String name;
int age;
}public class App {
public static void main(String[] args) {
Person person1 = new Person();
person1.name = "Gokhan Yavas";
person1.age = 28;Person person2 = new Person();
person2.name = "Gurkan Yavas";
person2.age = 21;System.out.println(person1.name);
}
}
Buradaki Person sınıfını App sınıfının içinde tanımladık. Person isminde bir sınıf oluşturup yine aynı şekilde sınıfın öğelerine erişebiliriz. Sınıf oluşturmak için projemizin üzerindeyken src klasörü - sağ tık - new - Java class yolunu izleyebiliriz.
Bu örneğin proje haline şuradan ulaşabilirsiniz.Dahili - İç Sınıflar (Inner Classes)Java'da ayrı ayrı sınıflar tanımlamak yerine mantıksal olarak bir bütünün parçaları olan sınıfları veya aynı işlevi yapması tasarlanan sınıfları tek bir sınıf içerisinde iç içe tanımlayabiliriz.Dahili sınıflar, dahili üye sınıflar, static dahili sınıflar, yerel dahili sınıflar ve anonim dahili sınıflar olmak üzere 4'e ayrılır.public class Robot {private int id;private class Brain{
public void think(){
System.out.println("Robot " + id + " is thinking..");
}
}public static class Battery{
public void charge(){
System.out.println("Battery charging...");
}
}public Robot(int id) {
this.id = id;
}public void start(){
System.out.println("Starting robot " + id);Brain brain = new Brain();
brain.think();final String name = "Gokhan";class Temp{
public void doSomething(){
System.out.println("ID is: " + id);
System.out.println("My name is " + name);
}
}Temp temp = new Temp();
temp.doSomething();
}
}
İç sınıflara örnek sınıfımız. Bu örneğin proje haline buradan ulaşabilirsiniz.Anonim Sınıflar (Anonymous Classes)Bir iç sınıf herhangi bir kod bloğunda class anahtar sözcüğü kullanılmadan veya herhangi bir
isim verilmeden kullanılırsa anonim sınıf oluşturulmuş olur. Anonim sınıflara Java kendi isim verdiğinden isim verilememektedir. Oluşturulan isimsiz sınıflar için java kendisi sıra ile isimler verilmektedir. Bu sınıf sadece tanımlandığı kod bloğunda kullanılır. Bir başka kod bloğunda kullanılmaz. Anonim sınıflar bir sınıfın bir başka sınıfı ve arabirimi genişletip yöntemlerini override etmekte kullanılır.Örnek:class Machine{
public void start(){
System.out.println("Starting machine ...");
}
}interface Plant{
public void grow();
}public class App {
public static void main(String[] args) {Machine machine1 = new Machine(){
@Override
public void start() {
System.out.println("Camera snapping...");
}
};machine1.start();Plant plant1 = new Plant() {
@Override
public void grow() {
System.out.println("Plant growing");
}
};plant1.grow();
}
}
Program çalıştığın çıktı şu şekilde olur:
Bu örneğin proje haline buradan ulaşabilirsiniz.