1
+ ### CSDArrayList sınıfı ve test kodu
1
2
``` java
2
3
/* ----------------------------------------------------------------------------------------------------------------------
3
4
CSDArrayList sınıfı ve test kodu
@@ -34,6 +35,7 @@ class App {
34
35
}
35
36
}
36
37
```
38
+ ### CSDArrayList sınıfı ve test kodu. (2)
37
39
``` java
38
40
/* ----------------------------------------------------------------------------------------------------------------------
39
41
CSDArrayList sınıfı ve test kodu.
@@ -69,6 +71,7 @@ class App {
69
71
}
70
72
}
71
73
```
74
+ ### CSDArrayList sınıfı ve test kodu (3)
72
75
``` java
73
76
/* ----------------------------------------------------------------------------------------------------------------------
74
77
CSDArrayList sınıfı ve test kodu
@@ -108,6 +111,7 @@ class App {
108
111
}
109
112
}
110
113
```
114
+ ### CSDArrayList sınıfı ve test kodu (4)
111
115
``` java
112
116
/* ----------------------------------------------------------------------------------------------------------------------
113
117
CSDArrayList sınıfı ve test kodu
@@ -135,6 +139,7 @@ class App {
135
139
}
136
140
}
137
141
```
142
+ ### CSDArrayList sınıfı ve test kodu (5)
138
143
``` java
139
144
/* ----------------------------------------------------------------------------------------------------------------------
140
145
CSDArrayList sınıfı ve test kodu
@@ -168,6 +173,7 @@ class App {
168
173
}
169
174
}
170
175
```
176
+ ### CSDArrayList sınıfı ve test kodu (6)
171
177
``` java
172
178
/* ----------------------------------------------------------------------------------------------------------------------
173
179
CSDArrayList sınıfı ve test kodu
@@ -272,6 +278,7 @@ class Device {
272
278
}
273
279
}
274
280
```
281
+ ### CSDArrayList sınıfı
275
282
``` java
276
283
/* ----------------------------------------------------------------------------------------------------------------------
277
284
CSDArrayList sınıfı
@@ -408,6 +415,7 @@ public class CSDArrayList {
408
415
// ...
409
416
}
410
417
```
418
+ ### static bloklar (static initializers)
411
419
``` java
412
420
/* ----------------------------------------------------------------------------------------------------------------------
413
421
04.10.2020
@@ -446,6 +454,7 @@ class Sample {
446
454
}
447
455
}
448
456
```
457
+ ### static bloklar (static initializers) (2)
449
458
``` java
450
459
/* ----------------------------------------------------------------------------------------------------------------------
451
460
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 {
484
493
}
485
494
}
486
495
```
496
+ ### static bloklar static metotlar gibidir yani bu bloklarda sınıfın yalnızca static elemanlarına doğrudan erişilebilir
487
497
``` java
488
498
/* ----------------------------------------------------------------------------------------------------------------------
489
499
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 {
519
529
}
520
530
}
521
531
```
532
+ ### Sınıfın final static veri elemanlarına static bloklarda değer atanabilir.
522
533
``` java
523
534
/* ----------------------------------------------------------------------------------------------------------------------
524
535
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 {
545
556
546
557
}
547
558
```
559
+ ### static bloğun bir kullanımı
548
560
``` java
549
561
/* ----------------------------------------------------------------------------------------------------------------------
550
562
static bloğun bir kullanımı
@@ -581,6 +593,7 @@ class Sample {
581
593
// ...
582
594
}
583
595
```
596
+ ### Aşağıdaki örnekte static blok kullanılarak kod daha basit bir biçimde yazılmıştır.
584
597
``` java
585
598
/* ----------------------------------------------------------------------------------------------------------------------
586
599
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 {
623
636
// ...
624
637
}
625
638
```
639
+ ### Bir sınıf içerisindeki tüm static blokların kendi faaliyet alanları vardır.
626
640
``` java
627
641
/* ----------------------------------------------------------------------------------------------------------------------
628
642
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 {
657
671
}
658
672
}
659
673
```
674
+ ### Date sınıfı
660
675
``` java
661
676
/* ----------------------------------------------------------------------------------------------------------------------
662
677
Date sınıfı
@@ -948,6 +963,7 @@ public class Date {
948
963
}
949
964
}
950
965
```
966
+ ### NumberUtil sınıfı
951
967
``` java
952
968
/* ----------------------------------------------------------------------------------------------------------------------
953
969
NumberUtil sınıfı
@@ -1224,6 +1240,7 @@ public final class NumberUtil {
1224
1240
}
1225
1241
}
1226
1242
```
1243
+ ### StringUtil sınıfı
1227
1244
``` java
1228
1245
1229
1246
/* ----------------------------------------------------------------------------------------------------------------------
@@ -1497,6 +1514,7 @@ public final class StringUtil {
1497
1514
}
1498
1515
}
1499
1516
```
1517
+ ### non-static bloklar (non-static initializer)
1500
1518
``` java
1501
1519
/* ----------------------------------------------------------------------------------------------------------------------
1502
1520
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 {
1527
1545
}
1528
1546
1529
1547
```
1548
+ ### non-static bloklar (non-static initializer) (2)
1530
1549
``` java
1531
1550
/* ----------------------------------------------------------------------------------------------------------------------
1532
1551
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 {
1566
1585
}
1567
1586
}
1568
1587
```
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.
1569
1589
``` java
1570
1590
1571
1591
/* ----------------------------------------------------------------------------------------------------------------------
@@ -1612,6 +1632,7 @@ class Sample {
1612
1632
}
1613
1633
}
1614
1634
```
1635
+ ### super ctor sentaksı kullanıldığında non-static blokların çalıştırılma sırası
1615
1636
``` java
1616
1637
/* ----------------------------------------------------------------------------------------------------------------------
1617
1638
super ctor sentaksı kullanıldığında non-static blokların çalıştırılma sırası
@@ -1661,6 +1682,7 @@ class B extends A {
1661
1682
}
1662
1683
}
1663
1684
```
1685
+ ### non-static bloklar non-static metotlar gibidir. Yani non-static elemanlara doğrudan erişilebilir
1664
1686
``` java
1665
1687
/* ----------------------------------------------------------------------------------------------------------------------
1666
1688
non-static bloklar non-static metotlar gibidir. Yani non-static elemanlara doğrudan erişilebilir
@@ -1686,6 +1708,7 @@ class A {
1686
1708
}
1687
1709
}
1688
1710
```
1711
+ ### Sınıfın non-static final veri elemanlarına non-static blok içerisinde değer atanabilir
1689
1712
``` java
1690
1713
/* ----------------------------------------------------------------------------------------------------------------------
1691
1714
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 {
1726
1749
// ...
1727
1750
}
1728
1751
```
1752
+ ### Yukarıdaki örnek aşağıdaki gibi de yapılabilir
1729
1753
``` java
1730
1754
/* ----------------------------------------------------------------------------------------------------------------------
1731
1755
Yukarıdaki örnek aşağıdaki gibi de yapılabilir
@@ -1770,6 +1794,7 @@ class Sample {
1770
1794
// ...
1771
1795
}
1772
1796
```
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.
1773
1798
``` java
1774
1799
/* ----------------------------------------------------------------------------------------------------------------------
1775
1800
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 {
1816
1841
}
1817
1842
}
1818
1843
```
1844
+ ### Türemiş sınıfı içerisinde taban sınıfta bulunan non-static bir veri elemanı ile aynı isimde veri elemanı bildirilebilir.
1819
1845
``` java
1820
1846
/* ----------------------------------------------------------------------------------------------------------------------
1821
1847
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 {
1852
1878
// ...
1853
1879
}
1854
1880
```
1881
+ ### super referansı ile taban sınıfın bir elemanına erişilebilir.
1855
1882
``` java
1856
1883
/* ----------------------------------------------------------------------------------------------------------------------
1857
1884
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 {
1898
1925
// ...
1899
1926
}
1900
1927
```
1928
+ ### Türemiş sınıf içerisinde taban sınıfta bulunan static bir veri elemanı ile aynı isimde bir veri elemanı bildirilebilir
1901
1929
``` java
1902
1930
/* ----------------------------------------------------------------------------------------------------------------------
1903
1931
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 {
1931
1959
// ...
1932
1960
}
1933
1961
```
1962
+ ## Çok biçimlilik (polymorphism)
1934
1963
``` java
1935
1964
/* ----------------------------------------------------------------------------------------------------------------------
1936
1965
Çok biçimlilik (polymorphism): Biyolojiden programlamaya aktarılmıştır. Biyolojide çok biçimlilik:
@@ -1962,6 +1991,7 @@ class A {
1962
1991
public olarak override edilmelidir
1963
1992
----------------------------------------------------------------------------------------------------------------------*/
1964
1993
```
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
1965
1995
``` java
1966
1996
/* ----------------------------------------------------------------------------------------------------------------------
1967
1997
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 {
1995
2025
}
1996
2026
}
1997
2027
```
2028
+ ### non-static method ve override edilerek çalışması
1998
2029
``` java
1999
2030
/* ----------------------------------------------------------------------------------------------------------------------
2000
2031
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 {
2046
2077
}
2047
2078
}
2048
2079
```
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)
2049
2081
``` java
2050
2082
/* ----------------------------------------------------------------------------------------------------------------------
2051
2083
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 {
2109
2141
System . out. println(" A.foo" );
2110
2142
}
2111
2143
}
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
2113
2147
/* ----------------------------------------------------------------------------------------------------------------------
2114
2148
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
2115
2149
metot çağrılır
@@ -2171,6 +2205,7 @@ class A {
2171
2205
}
2172
2206
}
2173
2207
```
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)
2174
2209
``` java
2175
2210
/* ----------------------------------------------------------------------------------------------------------------------
2176
2211
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 {
2230
2265
}
2231
2266
}
2232
2267
```
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)
2233
2269
``` java
2234
2270
/* ----------------------------------------------------------------------------------------------------------------------
2235
2271
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 {
2292
2328
}
2293
2329
}
2294
2330
```
2331
+ ### override edilen metot içerisinde "augmatation" işlemi
2295
2332
``` java
2296
2333
/* ----------------------------------------------------------------------------------------------------------------------
2297
2334
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 {
2359
2396
}
2360
2397
}
2361
2398
```
2399
+ ### Yukarıdaki örneğe D sınıfı eklenmesine rağmen yine müşteri kodları etkilenmemiştir.
2362
2400
``` java
2363
2401
/* ----------------------------------------------------------------------------------------------------------------------
2364
2402
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 {
2434
2472
}
2435
2473
}
2436
2474
```
2475
+ ### CompanyApp örneği
2437
2476
``` java
2438
2477
/* ----------------------------------------------------------------------------------------------------------------------
2439
2478
CompanyApp örneği
0 commit comments