CodeBlanks Logo Icon CodeBlanks

Özet - Abstract sınıf

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

Main.java
// 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

Main.java
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

Main.java
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

Main.java
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

Soru
abstract class Shape {
    ____ double area();
}
Cevap
abstract class Shape {
    abstract double area();
}

Açıklama: abstract kelimesi gövdesiz imza bildirir.

Orta seviye bölümündeki tüm dersler