private abstract array
Bu eğitici, Java'da Özel Yapıcı, Özet, Dize, Dizi, Arayüz ve Java'da Destructor gibi özel yapıcıları tartışacaktır:
Java'daki kurucularla ilgili son eğitimimizde, Java'daki kurucularla ilgili önemli kavramları öğrendik. Bir kurucu nasıl yaratılacağını ve kurucuları tanımlamak için kuralları, kurucu türleri vb. İle tartıştık.
Ayrıca yapıcı aşırı yüklemeyi ve yapıcı zincirlemeyi de öğrendik. Şimdi, Java'da özel bir kurucu, soyut kurucu ve dizi ve dizi oluşturucular gibi belirli özel kurucuları tartışalım. Daha sonra yıkıcıları Java'da tartışacağız ve son olarak yöntem ve kurucular arasındaki farkları keşfedeceğiz.
=> Java Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Java'da bir Özel Oluşturucu ile başlayalım.
Ne öğreneceksin:
- Java'da Özel Yapıcı
- Java'da Soyut Sınıf Oluşturucu
- Java'da Arayüz Oluşturucu
- Java'da Dize Oluşturucu
- Java'da Dizi Oluşturucuları
- Java'da Destructor
- Java'da Yapıcı Vs Yöntemi
- Sıkça Sorulan Sorular
- Sonuç
- Önerilen Kaynaklar
Java'da Özel Yapıcı
Daha önce belirtildiği gibi, Java sınıfındaki kurucular, kendileriyle ilişkilendirilmiş erişim tanımlayıcılarına sahip olabilir. Bu nedenle, özel veya halka açık kuruculara sahip olabiliriz. Sonraki eğitimlerimizde erişim belirleyicileri hakkında daha fazla tartışacağız ve ayrıca kurucuları bir kez daha gözden geçireceğiz.
Yapıcı özel olarak bildirildiğinde, yalnızca sınıfın içinden erişilebilir. Türetilmiş sınıflara başka bir sınıf üzerinden erişemez. Bu nedenle, bu public yöntemin özel oluşturuculara erişebilmesi için sınıfta özel oluşturuculara sahip bir genel yöntem sağlamamız gerekir.
Java'da özel oluşturucu aşağıdaki durumlarda kullanılabilir:
- Tekli tonları uygulamak için.
- Fabrika yöntemlerini dahil etmek için.
- Yalnızca statik üyeleri olan sınıflar için (değişkenler ve yöntemler).
- Nihai üyeleri olan sınıflar için. (sabitler - son ve statik).
- Tür açısından güvenli numaralandırmaları kullanmak için.
Örnek olarak , bir singleton dersi alalım. Bir singleton sınıfı, bir seferde yalnızca bir nesneye izin veren bir sınıftır. Birden fazla nesnenin oluşturulmasına izin vermediğimizden emin olmak için özel oluşturucuyu kullanabiliriz.
Aşağıdaki program, özel bir kurucu kullanarak bir singleton sınıfı uygular.
class SingleTonClass { //Static Class Reference private static SingleTonClass obj=null; private SingleTonClass(){ System.out.println('SingleTonClass::Private constructor'); } public static SingleTonClass create_object(){ //logic to create only one instance if(obj==null){ obj= new SingleTonClass(); } return obj; } public void display(){ System.out.println('This is SingleTonClass !!'); } } class Main { public static void main(String args()){ //cannot call private constructor directly. SingleTonClass myobject= SingleTonClass.create_object(); myobject.display(); } }
Çıktı:
Yukarıdaki program bir singleton sınıfı ilan eder. Özel kurucuya erişmek ve ayrıca nesnelerin sayısını yalnızca bir ile sınırlamak için özel bir kurucu ve genel bir yöntem sağladık. Ana yöntemde, bir singleton sınıf nesnesi oluşturmak için public yöntemi çalıştırıyoruz.
Java'da Soyut Sınıf Oluşturucu
Java'da C ++ olarak soyut sınıf, C ++ 'dan farklı olarak, Java'da soyut bir sınıf bildirmek için kullanılan soyut bir anahtar kelimemiz vardır. Java'daki soyut sınıfların yapıcıları olabilir. Bu soyut sınıf yapıcısı, bir uygulama sınıfının (soyut sınıfı miras alan) bir örneğini oluşturduğumuzda çağrılır.
Aşağıdaki Soyut Sınıf Oluşturucu örneğini düşünün.
//abstract class declaration abstract class BaseClass { BaseClass() { System.out.println('BaseClass::Constructor Called'); } abstract void func1(); } class DerivedClass extends BaseClass { DerivedClass() { System.out.println('DerivedClass::Constructor Called'); } void func1() { System.out.println('DerivedClass::func1() called'); } } class Main { public static void main(String args()) { DerivedClass d = new DerivedClass(); } }
Çıktı:
Soyut bir sınıf somutlaştırılamadığından, bu soyut sınıftan yeni bir sınıf miras alırız. Programın çıktısı, ana yöntemde türetilmiş sınıfın bir nesnesini oluşturduğumuzda, önce soyut sınıfın yapıcısının, ardından türetilmiş bir sınıf yapıcısının çağrıldığını gösterir.
Java'da Arayüz Oluşturucu
Java'daki arayüzler soyut sınıflara benzer. Arayüzler varsayılan olarak genel soyuttur ve yalnızca yöntem prototiplerine sahiptir. Bu prototipler daha sonra arayüzü uygulayan sınıfta uygulanır.
Yapıcılar Arayüzlerde mevcut mu?
Hayır. Arayüzlerin kurucuları yoktur. Bunun nedeni, bir arayüzdeki yöntemlerin sadece prototip olmasıdır ve bu nedenle, onu hiç kullanmayacağımız için arayüzün bir nesnesini somutlaştırmamıza veya oluşturmamıza gerek yoktur. Dolayısıyla, arayüzde bir kurucuya da gerek yoktur.
Aşağıdaki Java programı bu mantığı göstermektedir.
//interface declaration interface Interface_Add{ public int addNumbers(int num1, int num2); //method prototype } class AddClass implements Interface_Add{ public int addNumbers(int num1, int num2){ //method implementation int result= num1+num2; return result; } } class Main{ public static void main(String args()) { AddClass obj= new AddClass(); System.out.println('Result of addition:' + obj.addNumbers(2, 3)); } }
Çıktı:
Burada, bir yöntem 'addNumbers' prototipine sahip 'Interface_add' arayüzüne sahibiz. Ardından bir 'AddClass' sınıfı bu arabirimi ve ayrıca addNumbers yöntemini uygular.
Ana yöntemde, sınıf başlatılır ve yöntem çalıştırılır. Dolayısıyla bu arayüzde bir kurucuya ihtiyaç görmüyoruz.
android için iyi ücretsiz müzik indirici
Şimdi Java benzeri String and Array'de önceden var olan bazı sınıfların yapıcılarını tartışalım.
Java'da Dize Oluşturucu
Java'da bir dizgi nesnesi, String sınıfının bir nesnesi olarak tanımlanabilir. String sınıfı, String nesnelerini oluşturmak ve başlatmak için aşağıdaki yapıcıları sağlar.
Bu kuruculardan bazıları aşağıda tartışılmaktadır:
# 1) Dize (bayt () myArray)
Belirli bir bayt dizisinden yeni bir String nesnesi oluşturur. Dize nesnesini oluşturmak için varsayılan platform karakter kümesini kullanır ve bayt dizisinin kodunu çözer.
Misal:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Dize (bayt () myArray, Charset char_set)
Bu yapıcı, bayt dizisinin kodunu çözmek için yapıcı çağrısında belirtilen char_set kullanarak yeni bir dize nesnesi oluşturur.
Misal:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) Dize (char () myArray)
Bir karakter dizisinden bir String nesnesi oluşturabiliriz.
Misal:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) String (char () myArray, int start_index, int count)
Burada, start_index'ten count'a kadar olan karakterlerin sayısını dahil ederek karakter dizisinden bir String nesnesi oluşturuyoruz.
Misal:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) String (int () intArray, int ofset, int count)
Yukarıdaki kurucu, bir int dizisinden yeni bir String nesnesi tahsis eder. Dizedeki karakter sayısı, uzaklık ve sayı ile tanımlanır.
Misal:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) Dize (StringBuffer strbuffer)
Bu yapıcıda, bir StringBuffer nesnesinden yeni bir String nesnesi oluşturulur.
Misal:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) String (StringBuilder strbuilder)
StringBuilder nesnesi kullanılarak yeni bir String nesnesi oluşturulur.
Misal:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Java'da Dizi Oluşturucuları
Diziler, aşağıda gösterildiği gibi yeni bir anahtar sözcük kullanarak dizileri oluşturmak ve başlatmak için yapıcıları kullanır.
int() data = new int(4);
Yukarıdaki ifade 4 öğeden oluşan bir diziyi varsayılan 0 olarak başlatır.
Diziyi başlatmanın başka bir yolu aşağıda verilmiştir:
sql sınav soruları ve cevapları pdf
int() data = new int(){2, 4, 6, 8};
Java'da Destructor
Şimdiye kadar Java'da bir nesne oluşturduğumuz kurucular gördük. Nesne işini bitirdiğinde ve artık gerekli olmadığında, nesneye ayrılan belleğin serbest bırakılması veya serbest bırakılması gerekir. Bu, Java'daki bir yıkıcının işidir.
Java'da, artık kullanılmayan veya erişilemez hale gelen nesneleri serbest bırakmaktan Çöp Toplayıcı sorumludur. Java'daki yıkıcılara sonlandırıcılar denir ve bunlar belirleyici değildir, dolayısıyla yürütüleceklerini garanti edemeyiz.
Java'da yıkıcılar konusunda endişelenmemize gerek yok. Yıkıcıların Java'da belirli bir sözdizimi yoktur. Nesneler yok edilir ama biz C ++ 'da buna yıkıcı dediğimiz şekilde çağırmıyoruz.
Yukarıda bahsedildiği gibi, yıkıcının işi Çöp Toplayıcı tarafından çağrılan sonlandırıcı tarafından yapılır.
Java'daki sonlandırıcı yöntemi referansınız için aşağıda gösterilmiştir.
class Main { public static void main(String() args) { Main dm = new Main(); //create object dm = null; System.gc(); //call garbage collector System.out.println('Main Mathod'); } protected void finalize() //finalize method { System.out.println('Finalize method :: object is garbage collected'); } }
Çıktı:
Yukarıdaki programda bir sınıf nesnesi oluşturuyoruz. Null olarak ayarlayın ve ardından System.gc () yöntemini çağırıyoruz. Artık bu nesneye erişilemez ve finalize yöntemi (yıkıcı) örtük olarak çağrılır.
Java'da Yapıcı Vs Yöntemi
Java'da bir Oluşturucu ve Yöntem arasındaki bazı farklılıkları tablo haline getirelim.
İnşaatçılar | Yöntem |
---|---|
Yeni bir nesne oluşturur. | Zaten var olan bir nesne üzerinde çalışır. |
Bir nesne oluştururken sınıf üyelerini başlatmak için kullanılan bir kod bloğu. | Yürütüldüğünde bir sonuç oluşturan programlama deyimleri koleksiyonu. |
Nesnelerin başlatılmasını gerçekleştirmek için kullanılır. | Java tarafından yürütülen bir dizi ifade. Bir başlatma rutini içerebilir veya içermeyebilir. |
Örtük olarak çağrıldı. | Bir programda açıkça çağrılması gerekir. |
New anahtar sözcüğü kullanılarak yeni bir nesne oluşturulduğunda çağrılır. | Yöntem programcı tarafından çağrıldığında çağrılır. |
Bir sınıfın adıyla aynı isme sahiptir. | Programlama dilinin izin verdiği herhangi bir isme sahip olabilir. |
Dönüş türü yoktur. | Dönüş türüne sahip olmalı yoksa void döndürmelidir. |
Bir sınıfın birçok aşırı yüklenmiş kurucusu olabilir. | Sınıf, farklı yöntemlerin yanı sıra aşırı yüklenmiş olabilir. |
Çocuk sınıfı tarafından miras alınamaz. | Çocuk sınıfı tarafından miras alınabilir ve hatta geçersiz kılınabilir. |
Sıkça Sorulan Sorular
S # 1) Oluşturucular Özel Olabilir mi?
Cevap: Evet. Java'daki kurucular özel olabilir. Soyut sınıflar dahil tüm sınıfların özel oluşturucuları olabilir. Özel oluşturucular kullanarak sınıfın somutlaştırılmasını önleyebilir veya o sınıfın nesnelerinin sayısını sınırlayabiliriz.
S # 2) Java'da Abstract Class Constructor'ın kullanımı nedir?
Cevap: Soyut sınıfı miras alan türetilmiş sınıfın bir nesnesini oluşturduğumuzda, soyut bir sınıf yapıcısı çağrılır. Ayrıca, soyut sınıfta bazı üye değişkenler varsa, bunları soyut sınıf yapıcısında başlatabiliriz.
S # 3) Java'da Abstract sınıfında Parametreli Kurucu tanımlayabilir miyiz?
Cevap: Evet, soyut bir sınıfta parametreleştirilmiş bir kurucuya sahip olabiliriz. Sonra bu yapıcıyı super () çağrısını kullanarak soyut sınıfı miras alan türetilmiş sınıftan çağırabiliriz.
S # 4) Java'da neden Yok Edici olmadığını biliyor musunuz?
Cevap: Çöp toplayıcısına sahip olduğu için Java'nın belirli bir yıkıcıya sahip olması gerekmez. Bu çöp toplayıcı, ulaşılamayan nesneleri yok eder ve belleği serbest bırakır. Finalize adlı bir yöntem, aynı zamanda, belirleyici olmayan bir şekilde çalışan ve kaynakları serbest bırakmak gibi yıkıcı işlevini yerine getiren çöp toplayıcının bir parçasıdır.
S # 5) Soyut Sınıfın bir gövdesi olabilir mi?
Cevap: Hayır. Soyut bir sınıf yalnızca yöntem bildirimlerine ve yapıcılarına sahip olabilir. Yöntemleri uygulanmadı. Bu soyut sınıfı miras alan sınıf, yöntemleri uygular. Prototip veya bildirimlerin yanı sıra, görünürlük veya erişim belirteçlerine de sahip olabilir.
Sonuç
Bu, Java'daki yapıcılar hakkındaki öğreticimizi tamamlar. Burada, yapıcıların tanımını, oluşumunu ve türlerini ele aldık. Ayrıca Java'da yapıcı aşırı yüklemesini ve yapıcı zincirlemeyi tartıştık.
Java'daki soyut ve özel kurucuları araştırdık ve arabirimlerin neden kurucuları olamayacağını öğrendik. Dizi ve String sınıflarında kullanılan kurucular gördük.
Ayrıca, Java'da kurucuların tersi işlevi gören yıkıcıları da tartıştık. Yapıcılar nesneler yaratırken, yıkıcılar nesneleri yok ederler. Java'da, yıkıcı işlevi, çöp toplama sırasında çalıştırılan sonlandırıcı tarafından gerçekleştirilir.
Bu nedenle, Java'da belirli bir yıkıcıya sahip değiliz ve onu C ++ 'da yaptığımız şekilde tanımlamamız gerekmiyor. Yöntem ve kurucu arasındaki farkları da tartıştık. Yapıcının bir yöntemle aynı olmadığını biliyoruz, ancak yapıcıyı özel bir yöntem olarak görebiliriz.
=> Kolay Java Eğitim Serisini Okuyun.
Önerilen Kaynaklar
- Java Oluşturucu - Sınıf, Kopyalama ve Varsayılan Yapıcılar
- C # Kavramları: Yapıcı, Yıkıcı, Statik Sınıf, Yapısal ve Enum
- Java String Array- Kod Örnekleriyle Öğretici
- String Buffer ve String Builder Eğitimi ile Java String
- Java String length () Yöntem Örneklerle
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- Kod Örnekleriyle Java String indexOf Yöntemi
- Programlama Örnekleriyle Java Dize Karşılaştırma Yöntemi