Skip to content

Commit 8658882

Browse files
Update java021.md
1 parent aec74e6 commit 8658882

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

JavaLesson021/java021.md

+40-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
### CSDArrayList sınıfı ve test kodu
12
```java
23
/*----------------------------------------------------------------------------------------------------------------------
34
CSDArrayList sınıfı ve test kodu
@@ -34,6 +35,7 @@ class App {
3435
}
3536
}
3637
```
38+
### CSDArrayList sınıfı ve test kodu. (2)
3739
```java
3840
/*----------------------------------------------------------------------------------------------------------------------
3941
CSDArrayList sınıfı ve test kodu.
@@ -69,6 +71,7 @@ class App {
6971
}
7072
}
7173
```
74+
### CSDArrayList sınıfı ve test kodu (3)
7275
```java
7376
/*----------------------------------------------------------------------------------------------------------------------
7477
CSDArrayList sınıfı ve test kodu
@@ -108,6 +111,7 @@ class App {
108111
}
109112
}
110113
```
114+
### CSDArrayList sınıfı ve test kodu (4)
111115
```java
112116
/*----------------------------------------------------------------------------------------------------------------------
113117
CSDArrayList sınıfı ve test kodu
@@ -135,6 +139,7 @@ class App {
135139
}
136140
}
137141
```
142+
### CSDArrayList sınıfı ve test kodu (5)
138143
```java
139144
/*----------------------------------------------------------------------------------------------------------------------
140145
CSDArrayList sınıfı ve test kodu
@@ -168,6 +173,7 @@ class App {
168173
}
169174
}
170175
```
176+
### CSDArrayList sınıfı ve test kodu (6)
171177
```java
172178
/*----------------------------------------------------------------------------------------------------------------------
173179
CSDArrayList sınıfı ve test kodu
@@ -272,6 +278,7 @@ class Device {
272278
}
273279
}
274280
```
281+
### CSDArrayList sınıfı
275282
```java
276283
/*----------------------------------------------------------------------------------------------------------------------
277284
CSDArrayList sınıfı
@@ -408,6 +415,7 @@ public class CSDArrayList {
408415
//...
409416
}
410417
```
418+
### static bloklar (static initializers)
411419
```java
412420
/*----------------------------------------------------------------------------------------------------------------------
413421
04.10.2020
@@ -446,6 +454,7 @@ class Sample {
446454
}
447455
}
448456
```
457+
### static bloklar (static initializers) (2)
449458
```java
450459
/*----------------------------------------------------------------------------------------------------------------------
451460
Bir sınıfın içerisinde tüm metotların dışında herhangi bir yerde static anahtar sözcüğü ile tanımlanan bloklara
@@ -484,6 +493,7 @@ class Sample {
484493
}
485494
}
486495
```
496+
### static bloklar static metotlar gibidir yani bu bloklarda sınıfın yalnızca static elemanlarına doğrudan erişilebilir
487497
```java
488498
/*----------------------------------------------------------------------------------------------------------------------
489499
static bloklar static metotlar gibidir yani bu bloklarda sınıfın yalnızca static elemanlarına doğrudan erişilebilir
@@ -519,6 +529,7 @@ class Sample {
519529
}
520530
}
521531
```
532+
### Sınıfın final static veri elemanlarına static bloklarda değer atanabilir.
522533
```java
523534
/*----------------------------------------------------------------------------------------------------------------------
524535
Sınıfın final static veri elemanlarına static bloklarda değer atanabilir. Şüphesiz burada değer atanabilmesi
@@ -545,6 +556,7 @@ class Sample {
545556

546557
}
547558
```
559+
### static bloğun bir kullanımı
548560
```java
549561
/*----------------------------------------------------------------------------------------------------------------------
550562
static bloğun bir kullanımı
@@ -581,6 +593,7 @@ class Sample {
581593
//...
582594
}
583595
```
596+
### Aşağıdaki örnekte static blok kullanılarak kod daha basit bir biçimde yazılmıştır.
584597
```java
585598
/*----------------------------------------------------------------------------------------------------------------------
586599
Aşağıdaki örnekte static blok kullanılarak kod daha basit bir biçimde yazılmıştır. static blok kullanmadan
@@ -623,6 +636,7 @@ class Sample {
623636
//...
624637
}
625638
```
639+
### Bir sınıf içerisindeki tüm static blokların kendi faaliyet alanları vardır.
626640
```java
627641
/*----------------------------------------------------------------------------------------------------------------------
628642
Bir sınıf içerisindeki tüm static blokların kendi faaliyet alanları vardır. Yani aslında bunlar ayrı metotlar
@@ -657,6 +671,7 @@ class Sample {
657671
}
658672
}
659673
```
674+
### Date sınıfı
660675
```java
661676
/*----------------------------------------------------------------------------------------------------------------------
662677
Date sınıfı
@@ -948,6 +963,7 @@ public class Date {
948963
}
949964
}
950965
```
966+
### NumberUtil sınıfı
951967
```java
952968
/*----------------------------------------------------------------------------------------------------------------------
953969
NumberUtil sınıfı
@@ -1224,6 +1240,7 @@ public final class NumberUtil {
12241240
}
12251241
}
12261242
```
1243+
### StringUtil sınıfı
12271244
```java
12281245

12291246
/*----------------------------------------------------------------------------------------------------------------------
@@ -1497,6 +1514,7 @@ public final class StringUtil {
14971514
}
14981515
}
14991516
```
1517+
### non-static bloklar (non-static initializer)
15001518
```java
15011519
/*----------------------------------------------------------------------------------------------------------------------
15021520
Bir sınıfın non-static blokları (non-static initializer) olabilir. Bu bloklar ctor'ların başında çalıştırılır.
@@ -1527,6 +1545,7 @@ class Sample {
15271545
}
15281546

15291547
```
1548+
### non-static bloklar (non-static initializer) (2)
15301549
```java
15311550
/*----------------------------------------------------------------------------------------------------------------------
15321551
Bir sınıfın non-static blokları (non-static initializer) olabilir. Bu bloklar ctor'ların başında çalıştırılır.
@@ -1566,6 +1585,7 @@ class Sample {
15661585
}
15671586
}
15681587
```
1588+
### Bir sınıfın ctor'u içerisinde o sınıfın başka bir ctor'unun çağrılması kodu yazılmışsa (this ctor) bu durumda çağıran için non-static initializer kodu yerleştirilmez.
15691589
```java
15701590

15711591
/*----------------------------------------------------------------------------------------------------------------------
@@ -1612,6 +1632,7 @@ class Sample {
16121632
}
16131633
}
16141634
```
1635+
### super ctor sentaksı kullanıldığında non-static blokların çalıştırılma sırası
16151636
```java
16161637
/*----------------------------------------------------------------------------------------------------------------------
16171638
super ctor sentaksı kullanıldığında non-static blokların çalıştırılma sırası
@@ -1661,6 +1682,7 @@ class B extends A {
16611682
}
16621683
}
16631684
```
1685+
### non-static bloklar non-static metotlar gibidir. Yani non-static elemanlara doğrudan erişilebilir
16641686
```java
16651687
/*----------------------------------------------------------------------------------------------------------------------
16661688
non-static bloklar non-static metotlar gibidir. Yani non-static elemanlara doğrudan erişilebilir
@@ -1686,6 +1708,7 @@ class A {
16861708
}
16871709
}
16881710
```
1711+
### Sınıfın non-static final veri elemanlarına non-static blok içerisinde değer atanabilir
16891712
```java
16901713
/*----------------------------------------------------------------------------------------------------------------------
16911714
Sınıfın non-static final veri elemanlarına non-static blok içerisinde değer atanabilir. Şüphesiz daha önce
@@ -1726,6 +1749,7 @@ class Sample {
17261749
//...
17271750
}
17281751
```
1752+
### Yukarıdaki örnek aşağıdaki gibi de yapılabilir
17291753
```java
17301754
/*----------------------------------------------------------------------------------------------------------------------
17311755
Yukarıdaki örnek aşağıdaki gibi de yapılabilir
@@ -1770,6 +1794,7 @@ class Sample {
17701794
//...
17711795
}
17721796
```
1797+
### Aşağkdaki sınıfta public bölümde hiç static eleman olmadığından müşteri kodlar nesne yaratmadan bu sınıfı kullanamazlar.
17731798
```java
17741799
/*----------------------------------------------------------------------------------------------------------------------
17751800
Aşağkdaki sınıfta public bölümde hiç static eleman olmadığından müşteri kodlar nesne yaratmadan bu sınıfı
@@ -1816,6 +1841,7 @@ class Sample {
18161841
}
18171842
}
18181843
```
1844+
### Türemiş sınıfı içerisinde taban sınıfta bulunan non-static bir veri elemanı ile aynı isimde veri elemanı bildirilebilir.
18191845
```java
18201846
/*----------------------------------------------------------------------------------------------------------------------
18211847
Türemiş sınıfı içerisinde taban sınıfta bulunan non-static bir veri elemanı ile aynı isimde veri elemanı bildirilebilir.
@@ -1852,6 +1878,7 @@ class A {
18521878
//...
18531879
}
18541880
```
1881+
### super referansı ile taban sınıfın bir elemanına erişilebilir.
18551882
```java
18561883
/*----------------------------------------------------------------------------------------------------------------------
18571884
super referansı ile taban sınıfın bir elemanına erişilebilir. Aşağıdaki örnekte setValues metodu ile hem taban
@@ -1898,6 +1925,7 @@ class A {
18981925
//...
18991926
}
19001927
```
1928+
### Türemiş sınıf içerisinde taban sınıfta bulunan static bir veri elemanı ile aynı isimde bir veri elemanı bildirilebilir
19011929
```java
19021930
/*----------------------------------------------------------------------------------------------------------------------
19031931
Türemiş sınıf içerisinde taban sınıfta bulunan static bir veri elemanı ile aynı isimde bir veri elemanı bildirilebilir
@@ -1931,6 +1959,7 @@ class A {
19311959
//...
19321960
}
19331961
```
1962+
## Çok biçimlilik (polymorphism)
19341963
```java
19351964
/*----------------------------------------------------------------------------------------------------------------------
19361965
Çok biçimlilik (polymorphism): Biyolojiden programlamaya aktarılmıştır. Biyolojide çok biçimlilik:
@@ -1962,6 +1991,7 @@ class A {
19621991
public olarak override edilmelidir
19631992
----------------------------------------------------------------------------------------------------------------------*/
19641993
```
1994+
### non-static bir metot çağrısında metot sanal ise derleyici "çalışma zamanında referansın dinamik türüne bak, dinamik türe ilişkin sınıfta metot override edilmişse onu çağır" kodunu üretir
19651995
```java
19661996
/*----------------------------------------------------------------------------------------------------------------------
19671997
non-static bir metot çağrısında metot sanal ise derleyici "çalışma zamanında referansın dinamik türüne bak, dinamik
@@ -1995,6 +2025,7 @@ class A {
19952025
}
19962026
}
19972027
```
2028+
### non-static method ve override edilerek çalışması
19982029
```java
19992030
/*----------------------------------------------------------------------------------------------------------------------
20002031
non-static bir metot çağrısında metot sanal ise derleyici "çalışma zamanında referansın dinamik türüne bak, dinamik
@@ -2046,6 +2077,7 @@ class A {
20462077
}
20472078
}
20482079
```
2080+
### Yukarıdaki örneğe C sınıfı eklenmesine rağmen main içerisinde kodlar bundan etkilenmemiştir (türden bağımsızlık)
20492081
```java
20502082
/*----------------------------------------------------------------------------------------------------------------------
20512083
Yukarıdaki örneğe C sınıfı eklenmesine rağmen main içerisinde kodlar bundan etkilenmemiştir (türden bağımsızlık)
@@ -2109,7 +2141,9 @@ class A {
21092141
System.out.println("A.foo");
21102142
}
21112143
}
2112-
2144+
```
2145+
### Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan metot çağrılır
2146+
```java
21132147
/*----------------------------------------------------------------------------------------------------------------------
21142148
Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan
21152149
metot çağrılır
@@ -2171,6 +2205,7 @@ class A {
21712205
}
21722206
}
21732207
```
2208+
### Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan metot çağrılır (2)
21742209
```java
21752210
/*----------------------------------------------------------------------------------------------------------------------
21762211
Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan
@@ -2230,6 +2265,7 @@ class A {
22302265
}
22312266
}
22322267
```
2268+
### Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan metot çağrılır (3)
22332269
```java
22342270
/*----------------------------------------------------------------------------------------------------------------------
22352271
Sanal metot dinamik türe ilişkin sınıfta override edilmemişse sırasıyla taban sınıflar bakılır. İlk bulunan
@@ -2292,6 +2328,7 @@ class A {
22922328
}
22932329
}
22942330
```
2331+
### override edilen metot içerisinde "augmatation" işlemi
22952332
```java
22962333
/*----------------------------------------------------------------------------------------------------------------------
22972334
Bazen override edilen metot içerisinde taban sınıfının ilgili metodu da çağrılmak istenebilir. Bu durumda
@@ -2359,6 +2396,7 @@ class A {
23592396
}
23602397
}
23612398
```
2399+
### Yukarıdaki örneğe D sınıfı eklenmesine rağmen yine müşteri kodları etkilenmemiştir.
23622400
```java
23632401
/*----------------------------------------------------------------------------------------------------------------------
23642402
Yukarıdaki örneğe D sınıfı eklenmesine rağmen yine müşteri kodları etkilenmemiştir. Ayrıca taban sınıfın
@@ -2434,6 +2472,7 @@ class A {
24342472
}
24352473
}
24362474
```
2475+
### CompanyApp örneği
24372476
```java
24382477
/*----------------------------------------------------------------------------------------------------------------------
24392478
CompanyApp örneği

0 commit comments

Comments
 (0)