返回列表 發帖

抽象類別

本帖最後由 tonyh 於 2022-9-17 20:55 編輯

在設計Java程式時,當程式設計者希望基礎類別只是用來被衍生類別繼承,而不希望真正產生一個基礎類別的物件,此時就可以將基礎類別宣告成抽象類別。

所謂抽象類別(Abstract Class)是指無法建立物件,只能被衍生類別繼承的一種特殊類別,而在抽象類別裡可以宣告抽象方法(Abstract Method),抽象方法是一個尚未完全實作的方法,表示一個方法原型,必須在衍生類別中撰寫方法的實作內容。

關於抽象類別的幾個重點歸納如下:

1. 包含抽象方法的類別一定要宣告為抽象類別。
2. 抽象類別有建構子,但無法產生物件實體。
3. 抽象類別可同時包含抽象方法與一般方法,也可以完全沒有抽象方法。
4. 抽象類別一定要被繼承,而抽象方法一定要被改寫。
5. 若衍生類別中有任何一個抽象方法沒有被實作,則必須將該類別也宣告為抽象類別,以便強迫更下層的類別在繼承它後,實作剩餘沒有被實作的抽象方法。

本帖隱藏的內容需要回復才可以瀏覽

  1. public class JPA01 {

  2.         public static void main(String[] args) {
  3.            Square q1=new Square("方形1","綠色",5);
  4.            q1.showName();
  5.            q1.showColor();
  6.            Tri t1=new Tri("三角形1","粉紅色",7,5);
  7.            t1.calName();
  8.            t1.calColor();
  9.         }

  10. }
  11. abstract class shape
  12. {
  13.         String name, color;
  14.         shape(String n, String c)
  15.         {
  16.                 name =n;
  17.                 color =c;
  18.         }
  19.         void showName()
  20.         {
  21.                 System.out.println("物件名稱:"+name);
  22.         }
  23.         void showColor()
  24.         {
  25.                 System.out.println("顏色為:"+color);
  26.         }
  27.         abstract void calArea();
  28. }
  29. class Square extends shape
  30. {
  31.         int x;
  32.         Square(String n, String c, int x)
  33.         {
  34.                 super(n, c);
  35.                 this.x=x;
  36.         }
  37.         void calArea()
  38.         {
  39.                 System.out.println("面積為:"+(x*x)+"平方公分");
  40.         }
  41. }
  42. class Tri extends Shape
  43. {
  44.     double x, y;
  45.     Tri(String name, String color, double x, double y)
  46.     {
  47.         super(name,color);
  48.         this.x=x;
  49.         this.y=y;
  50.     }  
  51.     void calArea()
  52.     {
  53.         System.out.println("面積為: "+(x*y/2)+"平方公分");     
  54.     }
  55.    
複製代碼

TOP

本帖最後由 王秉鈞 於 2022-9-17 20:55 編輯
  1. public abstract class Ch34 {

  2.         public static void main(String[] args) {
  3.         Square q1=new Square("方形1號","綠色",5);
  4.         q1.showName();
  5.         q1.showColor();
  6.         q1.calArea();
  7.         Tri t1=new Square("三角形1號","粉紅色",7,5);
  8.         tr.showName();
  9.         tr.showColor();
  10.         tr.calArea();
  11.         }
  12. }
  13.    abstract class Shape
  14.    {
  15.            String name,color;
  16.            Shape(String name,String color)
  17.            {
  18.                    this.name=name;
  19.                    this.color=color;
  20.            }
  21.            void showName()
  22.            {
  23.                    System.out.println("物件名稱:"+name);
  24.            }
  25.            void showColor()
  26.            {
  27.                    System.out.println("顏色為:"+color);
  28.            }
  29.            abstract void calArea();
  30.    }
  31.    class Square extends Shape
  32.    {
  33.            int x;
  34.            Square(String n,String c,int x)
  35.            {
  36.                    super(n,c);
  37.                    this.x=x;
  38.            }
  39.            void calArea(){
  40.                    System.out.println("面積為:"+(x*x)+"平方公分");
  41.            }
  42.   }
  43.    class Tri extends Shape
  44.    {
  45.            double x,y;
  46.            Tri(String s,String c,double x,double y)
  47.            {
  48.                    super(s,c);
  49.                    this.x=x;
  50.                    this.y=y;
  51.            }
  52.            void calArea()
  53.            {
  54.                    System.out.println("面積為"+(x*y/2)+"平方公分");
  55.            }
  56. }
複製代碼

TOP

  1. package practice;

  2. public class practice02 {

  3.         public static void main(String[] args) {
  4.                 square q1=new square("方形1號","綠色",5);
  5.                 tri t1=new tri("三角形1號","粉紅色",7,5);
  6.                 q1.show();
  7.                 q1.calarea();
  8.                 t1.show();
  9.                 t1.calarea();
  10.         }

  11. }
  12. abstract class shape{
  13.         String name, color;
  14.         shape(String a,String b){
  15.                 name=a;
  16.                 color=b;
  17.         }
  18.         void show(){
  19.                 System.out.print("物件名稱:"+name+"\n"+"顏色:"+ color+"\n");
  20.         }
  21.         abstract void calarea();
  22. }
  23. class square extends shape
  24. {
  25.         int x;
  26.         square(String n,String c,int x){
  27.                 super(n,c);
  28.                 this.x=x;
  29.         }
  30.         void calarea(){
  31.                 System.out.print("面積為:"+(x*x)+"平方公分\n");
  32.         }
  33. }
  34. class tri extends shape
  35. {
  36.         float x;
  37.         float y;
  38.         tri(String n,String c,float x,float y){
  39.                 super(n,c);
  40.                 this.x=x;
  41.                 this.y=y;
  42.         }
  43.         void calarea(){
  44.                 System.out.print("面積為:"+(x*y)*0.5+"平方公分\n");
  45.         }
  46. }
複製代碼

TOP

3210654612432

TOP

  1. public class Ch71
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         Square sq=new Square("方形1號","綠色",5);
  6.         sq.showName();
  7.         sq.showColor();
  8.         sq.calArea();
  9.         Tri tr=new Tri("三角形1號","粉紅色",7,5);
  10.         tr.showName();
  11.         tr.showColor();
  12.         tr.calArea();
  13.     }   
  14. }

  15. abstract class Shape
  16. {
  17.     String name, color;
  18.     Shape(String name, String color)
  19.     {
  20.         this.name=name;
  21.         this.color=color;
  22.     }
  23.     void showName()
  24.     {
  25.         System.out.println("物件名稱: "+name);
  26.     }
  27.     void showColor()
  28.     {
  29.         System.out.println("顏色為: "+color);
  30.     }
  31.     abstract void calArea();
  32. }

  33. class Square extends Shape
  34. {
  35.     int x;
  36.     Square(String name, String color, int x)
  37.     {
  38.         super(name,color);
  39.         this.x=x;
  40.     }  
  41.     void calArea()
  42.     {
  43.         System.out.println("面積為: "+x*x+"平方公分");     
  44.     }
  45. }

  46. class Tri extends Shape
  47. {
  48.     double x, y;
  49.     Tri(String name, String color, double x, double y)
  50.     {
  51.         super(name,color);
  52.         this.x=x;
  53.         this.y=y;
  54.     }  
  55.     void calArea()
  56.     {
  57.         System.out.println("面積為: "+(x*y/2)+"平方公分");     
  58.     }
  59. }
複製代碼

TOP

  1. public class Ch01
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Square sq=new Square("方形1號","綠色",5);
  6.                 sq.showName();
  7.                 sq.showColor();
  8.                 sq.calArea();
  9.                 Tri tr=new Tri("三角形1號","粉紅色",7,5);
  10.                 tr.showName();
  11.                 tr.showColor();
  12.                 tr.calArea();
  13.         }   
  14. }

  15. abstract class Shape
  16. {
  17.         String name, color;
  18.         Shape(String name, String color)
  19.         {
  20.                 this.name=name;
  21.                 this.color=color;
  22.         }
  23.         void showName()
  24.         {
  25.                 System.out.println("物件名稱: "+name);
  26.         }
  27.         void showColor()
  28.         {
  29.                 System.out.println("顏色為: "+color);
  30.         }
  31.         abstract void calArea();
  32. }

  33. class Square extends Shape
  34. {
  35.         int x;
  36.         Square(String name, String color, int x)
  37.         {
  38.                 super(name,color);
  39.                 this.x=x;
  40.         }  
  41.         void calArea()
  42.         {
  43.                 System.out.println("面積為: "+x*x+"平方公分");     
  44.         }
  45. }

  46. class Tri extends Shape
  47. {
  48.         double x, y;
  49.         Tri(String name, String color, double x, double y)
  50.         {
  51.                 super(name,color);
  52.                 this.x=x;
  53.                 this.y=y;
  54.         }  
  55.         void calArea()
  56.         {
  57.                 System.out.println("面積為: "+(x*y/2)+"平方公分");     
  58.         }
  59. }
複製代碼

TOP

  1. public class C501 {

  2.         public static void main(String[] args) {
  3.                 Square q1=new Square("方形1號","綠色",5);
  4.                 q1.showName();
  5.                 q1.showColor();
  6.                 q1.calArea();
  7.                 Tri t1=new Tri("三角形1號","粉紅色",7,5);
  8.                 t1.showName();
  9.                 t1.showColor();
  10.                 t1.calArea();
  11.         }
  12. }
  13. abstract class Shape
  14. {
  15.         String name,color;
  16.         Shape(String n ,String c)
  17.         {
  18.                 name=n;
  19.                 color=c;
  20.         }
  21.         void showName()
  22.         {
  23.                 System.out.println("物件名稱:"+name);
  24.         }
  25.         void showColor()
  26.         {
  27.                 System.out.println("顏色為:"+color);
  28.         }
  29.         abstract void calArea();
  30. }
  31. class Square extends Shape
  32. {
  33.         int x;
  34.         Square(String n ,String c,int x)
  35.         {
  36.                 super(n,c);
  37.                 this.x=x;
  38.         }       
  39.         void showName()
  40.         {
  41.                 System.out.println("物件名稱:"+name);
  42.         }
  43.         void showColor()
  44.         {
  45.                 System.out.println("顏色為:"+color);
  46.         }
  47.         void calArea()
  48.         {
  49.                 System.out.println("面積為:"+(x*x)+"平方公分");
  50.         }
  51. }
  52. class Tri extends Shape
  53. {
  54.         float x,y;
  55.         Tri(String n ,String c,float x,float y)
  56.         {
  57.                 super(n,c);
  58.                 this.y=y;
  59.                 this.x=x;
  60.         }       
  61.         void showName()
  62.         {
  63.                 System.out.println("物件名稱:"+name);
  64.         }
  65.         void showColor()
  66.         {
  67.                 System.out.println("顏色為:"+color);
  68.         }
  69.         void calArea()
  70.         {
  71.                 System.out.println("面積為:"+(x*y)/2+"平方公分");
  72.         }
  73. }
複製代碼

TOP

  1. public class Ch02
  2. {
  3.         {
  4.                 Square sq=new Square("方形1號","綠色",5);
  5.                 sq.showName();
  6.                 sq.showColor();
  7.                 sq.calArea();
  8.                 Tri tr=new Tri("三角形1號","粉紅色",7,5);
  9.                 tr.showName();
  10.                 tr.showColor();
  11.                 tr.calArea();
  12.         }   
  13. }
  14. abstract class Shape
  15. {
  16.         String name, color;
  17.         Shape(String name, String color)
  18.         {
  19.                 this.name=name;
  20.                 this.color=color;
  21.         }
  22.         void showName()
  23.         {
  24.                 System.out.println("物件名稱: "+name);
  25.         }
  26.         void showColor()
  27.         {
  28.                 System.out.println("顏色為: "+color);
  29.         }
  30.         abstract void calArea();
  31. }
  32. class Square extends Shape
  33. {
  34.         int x;
  35.         Square(String name, String color, int x)
  36.         {
  37.                 super(name,color);
  38.                 this.x=x;
  39.         }  
  40.         void calArea()
  41.         {
  42.                 System.out.println("面積為: "+x*x+"平方公分");     
  43.         }
  44. }
  45. class Tri extends Shape
  46. {
  47.         double x, y;
  48.         Tri(String name, String color, double x, double y)
  49.         {
  50.                 super(name,color);
  51.                 this.x=x;
  52.                 this.y=y;
  53.         }  
  54.         void calArea()
  55.         {
  56.                 System.out.println("面積為: "+(x*y/2)+"平方公分");     
  57.         }
  58. }
複製代碼

TOP

  1. public class Ch71 {

  2.         public static void main(String[] args) {
  3.                 Square s = new Square("方形1號","綠色",5);
  4.                 s.showName();
  5.                 s.showColor();
  6.                 s.calArea();
  7.                 Tri t = new Tri("三角形1號","粉紅色",7,5);
  8.                 t.showName();
  9.                 t.showColor();
  10.                 t.calArea();
  11.         }

  12. }

  13. abstract class shape {
  14.         String name, color;
  15.        
  16.         shape(String name, String color) {
  17.                 this.name = name;
  18.                 this.color = color;
  19.         }
  20.        
  21.         void showName() {
  22.                 System.out.println("物件名稱:" + name);
  23.         }
  24.        
  25.         void showColor() {
  26.                 System.out.println("顏色為:" + color);
  27.         }
  28.        
  29.         abstract void calArea();
  30. }

  31. class Square extends shape {
  32.         int x;
  33.        
  34.         Square(String name, String color, int x) {
  35.                 super(name, color);
  36.                 this.x = x;
  37.         }

  38.         void calArea() {
  39.                 System.out.println("面積為:"+(x*x)+"平方公分");
  40.         }
  41. }


  42. class Tri extends shape {
  43.         float x, y;

  44.         Tri(String name, String color, float x, float y) {
  45.                 super(name, color);
  46.                 this.x = x;
  47.                 this.y = y;
  48.         }

  49.         void calArea() {
  50.                 System.out.println("面積為:"+(x*y/2)+"平方公分");
  51.         }
  52.        
  53. }
複製代碼

TOP

  1. public class Ch71 {
  2.         public static void main(String[] args) {
  3.                 Square q1=new Square("方形1號","綠色",5);
  4.                 q1.showName();
  5.                 q1.showColor();
  6.                 q1.calArea();
  7.                 Tri t1=new Tri("三角形1號","粉紅色",7,5);
  8.                 t1.showName();
  9.                 t1.showColor();
  10.                 t1.calArea();
  11.         }
  12. }
  13. abstract class shape{
  14.         String name,color;
  15.         shape(String n,String c){
  16.                 name=n;
  17.                 color=c;
  18.         }
  19.         void showName()
  20.         {
  21.                 System.out.println("物件名稱:"+name);
  22.         }
  23.         void showColor()
  24.         {
  25.                 System.out.println("顏色為:"+color);
  26.         }
  27.         abstract void calArea();
  28. }
  29. class Square extends shape
  30. {
  31.         int x;
  32.         Square(String n, String c, int x)
  33.         {
  34.                 super(n, c);
  35.                 this.x=x;
  36.         }
  37.         void calArea()
  38.         {
  39.                 System.out.println("面積為:"+x*x+"平方公分");
  40.         }
  41. }
  42. class Tri extends shape{
  43.         float x,y;
  44.         Tri(String n,String c,float x,float y)
  45.         {
  46.                 super(n,c);
  47.                 this.x=x;
  48.                 this.y=y;
  49.         }
  50.         void calArea()
  51.         {
  52.                 System.out.println("面積為:"+x*y/2+"平方公分");
  53.         }
  54. }
複製代碼

TOP

  1. package ch02;

  2. public class ch03 {

  3.         public static void main(String[] args) {
  4.                 Sqare s1=new Sqare("方形1號","綠色",5);
  5.                 s1.showName();
  6.                 s1.showColor();
  7.                 s1.calArea();
  8.                 Tri t1=new Tri("三角形1","粉紅色",7,5);
  9.         t1.showName();
  10.         t1.showColor();
  11.         t1.calArea();

  12.         }

  13. }
  14. abstract class Shape
  15. {
  16.         String name;
  17.         String color;
  18.         Shape(String n,String c)
  19.         {
  20.                 name=n;
  21.                 color=c;
  22.         }
  23.         void showName()
  24.         {
  25.                 System.out.print("物件名稱:"+name);
  26.                 System.out.println();
  27.         }
  28.         void showColor()
  29.         {
  30.                 System.out.print("顏色為:"+color);
  31.                 System.out.println();
  32.         }
  33.         abstract void calArea();
  34. }
  35. class Sqare extends Shape
  36. {
  37.         int x;
  38.         Sqare(String n,String c,int x)
  39.         {
  40.                 super(n,c);
  41.                 this.x=x;
  42.         }
  43.         void calArea()
  44.         {
  45.                 System.out.print("面積為:"+(x*x)+"平方公分");
  46.         }
  47. }
  48. class Tri extends Shape
  49. {
  50.         int x,y;
  51.         Tri(String n,String c,int x,int y)
  52.         {
  53.                 super(n,c);
  54.                 this.x=x;
  55.                 this.y=y;
  56.         }
  57.         void calArea()
  58.         {
  59.                 System.out.print("面積為:"+(x*y/2)+"平方公分");
  60.         }
  61. }
複製代碼

TOP

  1. public class Ch02
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         Square sq=new Square("方形1號","綠色",5);
  6.         sq.showName();
  7.         sq.showColor();
  8.         sq.calArea();
  9.         Tri tr=new Tri("三角形1號","粉紅色",7,5);
  10.         tr.showName();
  11.         tr.showColor();
  12.         tr.calArea();
  13.     }   
  14. }

  15. abstract class Shape
  16. {
  17.     String name, color;
  18.     Shape(String name, String color)
  19.     {
  20.         this.name=name;
  21.         this.color=color;
  22.     }
  23.     void showName()
  24.     {
  25.         System.out.println("物件名稱: "+name);
  26.     }
  27.     void showColor()
  28.     {
  29.         System.out.println("顏色為: "+color);
  30.     }
  31.     abstract void calArea();
  32. }

  33. class Square extends Shape
  34. {
  35.     int x;
  36.     Square(String name, String color, int x)
  37.     {
  38.         super(name,color);
  39.         this.x=x;
  40.     }  
  41.     void calArea()
  42.     {
  43.         System.out.println("面積為: "+x*x+"平方公分");     
  44.     }
  45. }

  46. class Tri extends Shape
  47. {
  48.     double x, y;
  49.     Tri(String name, String color, double x, double y)
  50.     {
  51.         super(name,color);
  52.         this.x=x;
  53.         this.y=y;
  54.     }  
  55.     void calArea()
  56.     {
  57.         System.out.println("面積為: "+(x*y/2)+"平方公分");     
  58.     }
  59. }
複製代碼

TOP

返回列表