Özet - Abstract sınıf
- Java kursu
- Orta seviye
- Ders 58/116
- 5 dk
abstract metot ve sealed'ı birleştirerek bir geometri hiyerarşisi yazarsın.
Özet: Geometri hiyerarşisi
Bu özette bir geometri hiyerarşisi tasarlayacaksın. Shape abstract sınıfı area abstract metodunu tanımlar; Circle ve Square bu sözleşmeyi uygular. Hiyerarşiyi sealed ile kapatırsın.
Önce abstract class Shape { abstract double area(); } tanımlayacaksın. Sonra Circle ve Square alt sınıfları area metodunu override eder. Son olarak sealed class Shape permits Circle, Square ile hiyerarşiyi kapatırsın. Bu yapı, abstract metot ve sealed'ı gerçek bir senaryoda birleştirir. Her alt sınıf kendi alan hesabını yazar; ama hepsi Shape sözleşmesine uyar.
Uygulama Shape abstract sınıfını ve Circle'ı tanımla
Shape adında bir abstract sınıf tanımla; içine abstract double area(); imzasını ekle. class Circle extends Shape yaz; double r alanı, Circle(double r) yapıcısı (alanı ata) ve public double area() metodu ekle; gövde return Math.PI * r * r; döndürsün. main içinde Circle c = new Circle(2); ile System.out.println(c.area()); yazdır.
Başlangıç kodu
// Soyut geometri sınıfını yaz
// Daire alt sınıfını ekle ve alan hesapla
// main'de sonucu yazdırÖrnek çözüm
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
double r;
Circle(double r) {
this.r = r;
}
public double area() {
return Math.PI * r * r;
}
}
class Main {
public static void main(String[] args) {
Circle c = new Circle(2);
System.out.println(c.area());
}
}Beklenen çıktı
12.566370614359172
Uygulama Sealed Shape ile hiyerarşiyi kapat
Bu dosyada Shape'i sealed yapıp Circle ve Square alt sınıflarını ekleyeceksin. sealed abstract class Shape permits Circle, Square tanımla; içine abstract double area(); ekle. final class Circle extends Shape yaz; double r, Circle(double r) ve public double area() (gövde return Math.PI * r * r;) ekle. final class Square extends Shape yaz; double s, Square(double s) ve public double area() (gövde return s * s;) ekle. main içinde new Circle(2).area() ve new Square(3).area() sonuçlarını ayrı satırlarda yazdır.
Başlangıç kodu
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
double r;
Circle(double r) {
this.r = r;
}
public double area() {
return Math.PI * r * r;
}
}
class Main {
public static void main(String[] args) {
Circle c = new Circle(2);
System.out.println(c.area());
}
}
// Hiyerarşiyi sealed ile kapat
// Kare alt sınıfını ekle
// main'de daire ve kare alanlarını yazdırÖrnek çözüm
sealed abstract class Shape permits Circle, Square {
abstract double area();
}
final class Circle extends Shape {
double r;
Circle(double r) {
this.r = r;
}
public double area() {
return Math.PI * r * r;
}
}
final class Square extends Shape {
double s;
Square(double s) {
this.s = s;
}
public double area() {
return s * s;
}
}
class Main {
public static void main(String[] args) {
System.out.println(new Circle(2).area());
System.out.println(new Square(3).area());
}
}Beklenen çıktı
12.566370614359172 9.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Geometri hiyerarşisinde Shape nasıl tanımlanmalı?
- interface
- record
- final class
- abstract class Doğru cevap
Açıklama: Shape abstract sınıftır; alt sınıflar onu miras alır.
2 Geometri hiyerarşisi parçalarını eşle
| Kavram | Anlamı |
|---|---|
Shape |
Soyut temel |
Circle |
Daire alt sınıfı |
area |
Soyut metot |
sealed |
Kapatma kelimesi |
3 abstract area imzasını tamamla
abstract class Shape {
____ double area();
}
abstract class Shape {
abstract double area();
}
Açıklama: abstract kelimesi gövdesiz imza bildirir.