標題:
抽象類別
[打印本頁]
作者:
tonyh
時間:
2021-7-9 20:21
標題:
抽象類別
本帖最後由 tonyh 於 2021-7-9 20:23 編輯
在設計Java程式時,當程式設計者希望基礎類別只是用來被衍生類別繼承,而不希望真正產生一個基礎類別的物件,此時就可以將基礎類別宣告成抽象類別。
所謂抽象類別(Abstract Class)是指無法建立物件,只能被衍生類別繼承的一種特殊類別,而在抽象類別裡可以宣告抽象方法(Abstract Method),抽象方法是一個尚未完全實作的方法,表示一個方法原型,必須在衍生類別中撰寫方法的實作內容。
關於抽象類別的幾個重點歸納如下:
1. 包含抽象方法的類別一定要宣告為抽象類別。
2. 抽象類別有建構子,但無法產生物件實體。
3. 抽象類別可同時包含抽象方法與一般方法,也可以完全沒有抽象方法。
4. 抽象類別一定要被繼承,而抽象方法一定要被改寫。
5. 若衍生類別中有任何一個抽象方法沒有被實作,則必須將該類別也宣告為抽象類別,以便強迫更下層的類別在繼承它後,實作剩餘沒有被實作的抽象方法。
public class Ch71
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
陳宥穎
時間:
2021-7-9 21:03
public class Ch08 {
public static void main(String[] args)
{
Square sq=new Square("方形1","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1","粉紅色",8,12);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String n, c;
Shape(String name, String color)
{
n=name;
c=color;
}
void showName()
{
System.out.println("物件名稱: "+n);
}
void showColor()
{
System.out.println("顏色為: "+c);
}
abstract void calArea();
}
class Square extends Shape
{
int xx;
Square(String name, String color, int x)
{
super(name,color);
xx=x;
}
void calArea() {
System.out.println("面積為:"+xx*xx);
}
}
class Tri extends Shape
{
double xx, yy;
Tri(String name, String color, double x, double y)
{
super(name,color);
xx=x;
yy=y;
}
void calArea()
{
System.out.println("面積為: "+(xx*yy/2)+"平方公分");
}
}
複製代碼
作者:
劉愷鈞
時間:
2021-7-9 21:04
public class Ch02 {
public static void main(String[] args) {
square s=new square("方形1號","綠色",5);
s.showname();
s.showcolor();
s.calArea();
tri t=new tri("三角形1號","粉紅色",7,5);
t.showname();
t.showcolor();
t.calArea();
}
}
abstract class shape
{
String name,color;
shape(String n,String c)
{
name=n;
color=c;
}
void showname()
{
System.out.println("物件名稱: "+name);
}
void showcolor()
{
System.out.println("顏色: "+color);
}
abstract void calArea();
}
class square extends shape
{
int x;
square(String name,String color, int x)
{
super(name, color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class tri extends shape
{
double x, y;
tri(String name,String color,double x,double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
董宸佑
時間:
2021-7-9 21:24
public class Ch01 {
public static void main(String[] args) {
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape{
String color, name;
Shape(String name, String color){
this.name=name;
this.color=color;
}
void showName(){
System.out.println("物件名稱:"+name);
}
void showColor(){
System.out.println("顏色為:"+color);
}
abstract void calArea();
}
class Square extends Shape{
int x;
Square(String n, String c, int x) {
super(n, c);
this.x=x;
}
void calArea(){
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape{
double x, y;
Tri(String n, String c, double x, double y) {
super(n, c);
this.x=x;
this.y=y;
}
void calArea(){
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
黃柏叡
時間:
2021-7-11 14:37
public class Ch04
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
孫嘉駿
時間:
2021-7-16 18:58
public class Ch04 {
public static void main(String[] args) {
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
李宇澤
時間:
2021-7-16 19:03
本帖最後由 李宇澤 於 2021-7-16 19:23 編輯
public class Ch63
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
林政瑜
時間:
2021-7-16 19:07
public class Ch71
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
黃宥華
時間:
2021-7-16 19:23
public class Ch03
{
public static void main(String[] args)
{
Square sq=new Square("方形一號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形一號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
沈子晏
時間:
2021-7-16 19:35
public class Ch071601 {
public static void main(String[] args) {
Square sq=new Square("方形1號", "綠色", 5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String n, String c)
{
name=n;
color=c;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
蔡忻霓
時間:
2021-7-16 19:36
public class JPA01
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
作者:
夏子涵
時間:
2021-7-16 19:40
public class Ch01
{
public static void main(String[] args)
{
Square sq=new Square("方形1號","綠色",5);
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape
{
String name, color;
Shape(String name, String color)
{
this.name=name;
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea();
}
class Square extends Shape
{
int x;
Square(String name, String color, int x)
{
super(name,color);
this.x=x;
}
void calArea()
{
System.out.println("面積為: "+x*x+"平方公分");
}
}
class Tri extends Shape
{
double x, y;
Tri(String name, String color, double x, double y)
{
super(name,color);
this.x=x;
this.y=y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分");
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2