標題:
抽象類別
[打印本頁]
作者:
tonyh
時間:
2019-9-16 19:56
標題:
抽象類別
在設計Java程式時,當程式設計者希望基礎類別只是用來被衍生類別繼承,而不希望真正產生一個基礎類別的物件,此時就可以將基礎類別宣告成抽象類別。
所謂抽象類別(Abstract Class)是指無法建立物件,只能被衍生類別繼承的一種特殊類別,而在抽象類別裡可以宣告抽象方法(Abstract Method),抽象方法是一個尚未完全實作的方法,表示一個方法原型,必須在衍生類別中撰寫方法的實作內容。
關於抽象類別的幾個重點歸納如下:
1. 包含抽象方法的類別一定要宣告為抽象類別。
2. 抽象類別有建構子,但無法產生物件實體。
3. 抽象類別可同時包含抽象方法與一般方法,也可以完全沒有抽象方法。
4. 抽象類別一定要被繼承,而抽象方法一定要被改寫。
5. 若衍生類別中有任何一個抽象方法沒有被實作,則必須將該類別也宣告為抽象類別,以便強迫更下層的類別在繼承它後,實作剩餘沒有被實作的抽象方法。
本帖隱藏的內容需要回復才可以瀏覽
作者:
洪翊庭
時間:
2019-9-16 20:32
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)+"平方公分");
}
}
複製代碼
作者:
趙一鳴
時間:
2019-9-16 20:59
public class SC {
public static void main(String[] args)
{
Square s1 = new Square("方形1號","綠色",5);
Triangle tr1 = new Triangle("三角形1號","粉紅色",7,5);
s1.showName();
s1.showColor();
s1.calArea();
tr1.showName();
tr1.showColor();
tr1.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 n,String c,int x)
{
super(c,n);
this.x = x;
}
void calArea()
{
System.out.println("面積為: "+(x*x)+"平方公分" );
}
}
class Triangle extends Shape
{
double x,y;
Triangle(String n,String c,double x,double y)
{
super(c,n);
this.x = x;
this.y = y;
}
void calArea()
{
System.out.println("面積為: "+(x*y/2)+"平方公分" );
}
}
複製代碼
作者:
戴嘉禾
時間:
2019-9-16 21:02
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)+"平方公分");
}
}
複製代碼
作者:
黃宇綸
時間:
2019-9-16 21:03
public class Ch01 {
public static void main(String[] args) {
Sqa s=new Sqa("方形一號","綠色",5);
Tri t=new Tri("三角形一號","粉紅色",7,5);
s.showName();
s.showColor();
s.calArea();
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 Sqa extends Shape{
int x;
Sqa(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+"平方公分");
}
}
複製代碼
作者:
洪翊展
時間:
2019-9-16 21:03
本帖最後由 洪翊展 於 2019-9-16 21:05 編輯
public class Ch71 {
Square s1=new Square("方形一號","綠色",5);
s1=showName();
s1=showColor();
s1=calArea();
Tri t1=new Tri("三角形一號","白色",5,7);
t1=showName();
t1=showColor();
t1=calArea();
}
abstract class Shape{
String name;
String 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 j;
Square(String n,String c,int j){
super(n,c);
this.j=j;
}
void calArea(){
System.out.println("面積為 "+(j*j)+"平方公分");
}
}
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+"平方公分");
}
}
複製代碼
作者:
黃宇瑄
時間:
2019-9-16 21:05
public class Ch01
{
public static void main(String[] args)
{
Square s1=new Square("方形1號","綠色",5);
Tri t1=new Tri("三角形1號","粉紅色",7,5);
s1.showName();
s1.showColor();
s1.calArea();
t1.showName();
t1.showColor();
t1.calArea();
}
}
abstract class Shape
{
String name;
String 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 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+"平方公里");
}
}
複製代碼
作者:
李沛昂
時間:
2019-9-16 21:09
public class Ch00 {
public static void main(String[] args) {
Square s=new Square("方形一號","綠色",5);
Tri t=new Tri("三角形一號","粉紅色",5,7);
s.showName();
s.showColor();
s.calArea();
t.showName();
t.showColor();
t.calArea();
}
}
abstract class Shape{
String name;
String 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 n,String c,int x)
{
super(n,c);
this.x=x;
}
@Override
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;
}
@Override
void calArea() {
System.out.println("面積: "+(x*y)/2+"平方公分");
}
}
複製代碼
作者:
鄭楀諺
時間:
2019-9-28 14:55
public class Morris {
public static void main(String[] args) {
// TODO 自動產生的方法 Stub
square sq = new square("方形一號", "綠色", 5);
sq.showName();
sq.showColor();
sq.calArea();
triangle tri = new triangle("三角形一號", "粉紅色", 7, 5);
tri.showName();
tri.showColor();
tri.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 triangle extends shape
{
double b, h;
triangle(String name, String color, double b, double h)
{
super(name, color);
this.h = h;
this.b = b;
}
void calArea()
{
System.out.println("面積為: "+b*h/2+"平方公分");
}
}
複製代碼
作者:
may
時間:
2020-2-9 15:59
public class Ch71 //主類別 Ch71
{
public static void main(String[] args) 主方法
{
Square sq=new Square("方形1號","綠色",5); //用Square 建構子產生Square 物件sq
sq.showName();
sq.showColor();
sq.calArea();
Tri tr=new Tri("三角形1號","粉紅色",7,5);
tr.showName();
tr.showColor();
tr.calArea();
}
}
abstract class Shape //抽象類別 Shape
{
String name, color; //Shape 的屬性
Shape(String name, String color) //Shape的建構子
{
this.name=name; //本函數的name賦值給本類的name
this.color=color;
}
void showName()
{
System.out.println("物件名稱: "+name);
}
void showColor()
{
System.out.println("顏色為: "+color);
}
abstract void calArea(); //抽象方法 calArea()
}
class Square extends Shape //Square 類別繼承自Share 類別
{
int x; // Square 類別 增加一個屬性(元素)
Square(String name, String color, int x) //Square 類別的建構子
{
super(name,color); //name,color 屬性直接繼承自父類別
this.x=x; //本函數的參數 x 賦值給 Square.x
}
void calArea() //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://seed.istak.org.tw/)
Powered by Discuz! 7.2