hendroprwk08

Polymorphism

Nov 27th, 2025
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.83 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. class Mahasiswa {
  6.     String nama, nim;
  7.  
  8.     public Mahasiswa(String nama, String nim) {
  9.         this.nama = nama;
  10.         this.nim = nim;
  11.     }
  12.  
  13.     void tugas() {
  14.         System.out.println("Mahasiswa " + nama + " sedang belajar mandiri.");
  15.     }
  16. }
  17.  
  18. // Mahasiswa S1 dengan tambahan nilai skripsi dan nama kelas
  19. class MahasiswaS1 extends Mahasiswa {
  20.     int semester;
  21.     double nilaiSkripsi;
  22.     String namaKelas;
  23.  
  24.     public MahasiswaS1(String nama, String nim, int semester, double nilaiSkripsi,
  25.         String namaKelas) {
  26.         super(nama, nim);
  27.         this.semester = semester;
  28.         this.nilaiSkripsi = nilaiSkripsi;
  29.         this.namaKelas = namaKelas;
  30.     }
  31.  
  32.     @Override
  33.     void tugas() {
  34.         System.out.println("Mhs S1 " + nama + ", semester " + semester +
  35.                 " dari kelas " + namaKelas +
  36.                 " sedang mengerjakan skripsi dengan nilai " + nilaiSkripsi);
  37.     }
  38. }
  39.  
  40. class MahasiswaS2 extends Mahasiswa {
  41.     String bidangStudi;
  42.  
  43.     public MahasiswaS2(String nama, String nim, String bidangStudi) {
  44.         super(nama, nim);
  45.         this.bidangStudi = bidangStudi;
  46.     }
  47.  
  48.     @Override
  49.     void tugas() {
  50.         System.out.println(nama + " sedang mengerjakan tesis pada bidang " + bidangStudi);
  51.     }
  52. }
  53.  
  54. class MahasiswaS3 extends Mahasiswa {
  55.     String promotor;
  56.  
  57.     public MahasiswaS3(String nama, String nim, String promotor) {
  58.         super(nama, nim);
  59.         this.promotor = promotor;
  60.     }
  61.  
  62.     @Override
  63.     void tugas() {
  64.         System.out.println(nama + ", promotor " + promotor + ", sedang mengerjakan disertasi.");
  65.     }
  66. }
  67.  
  68. public class Main {
  69.     public static void main(String[] args) {
  70.         Scanner sc = new Scanner(System.in);
  71.         List<Mahasiswa> daftarMahasiswa = new ArrayList<>();
  72.  
  73.         System.out.print("Berapa jumlah mahasiswa yang ingin diinput? ");
  74.         int jumlah = sc.nextInt();
  75.         sc.nextLine(); // bersihkan buffer
  76.  
  77.         for (int i = 1; i <= jumlah; i++) {
  78.             System.out.println("\nData Mahasiswa ke-" + i);
  79.             System.out.print("Nama: ");
  80.             String nama = sc.nextLine();
  81.             System.out.print("NIM: ");
  82.             String nim = sc.nextLine();
  83.  
  84.             System.out.print("Jenjang (1=S1, 2=S2, 3=S3, lainnya=umum): ");
  85.             int jenjang = sc.nextInt();
  86.             sc.nextLine(); // bersihkan buffer
  87.  
  88.             switch (jenjang) {
  89.                 case 1:
  90.                     System.out.print("Semester: ");
  91.                     int semester = sc.nextInt();
  92.                     sc.nextLine();
  93.                     System.out.print("Nama Kelas: ");
  94.                     String kelas = sc.nextLine();
  95.                     System.out.print("Nilai Skripsi: ");
  96.                     double nilai = sc.nextDouble();
  97.                     sc.nextLine();
  98.                     daftarMahasiswa.add(new MahasiswaS1(nama, nim, semester, nilai, kelas));
  99.                     break;
  100.                 case 2:
  101.                     System.out.print("Bidang Studi: ");
  102.                     String bidang = sc.nextLine();
  103.                     daftarMahasiswa.add(new MahasiswaS2(nama, nim, bidang));
  104.                     break;
  105.                 case 3:
  106.                     System.out.print("Nama Promotor: ");
  107.                     String promotor = sc.nextLine();
  108.                     daftarMahasiswa.add(new MahasiswaS3(nama, nim, promotor));
  109.                     break;
  110.                 default:
  111.                     daftarMahasiswa.add(new Mahasiswa(nama, nim));
  112.             }
  113.         }
  114.  
  115.         // Cetak Report
  116.         System.out.println("\n=== REPORT MAHASISWA ===");
  117.         for (Mahasiswa mhs : daftarMahasiswa) {
  118.             mhs.tugas(); // polymorphism: method sesuai tipe objek
  119.         }
  120.  
  121.         sc.close();
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment