中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中抽象類和接口有哪些區別

發布時間:2021-11-25 11:10:10 來源:億速云 閱讀:138 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Java中抽象類和接口有哪些區別”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java中抽象類和接口有哪些區別”這篇文章吧。

1、抽象類 vs 接口 

  • 方法類型: 接口只能有抽象方法。抽象類可以有抽象和非抽象方法。從 Java 8 開始,它也可以有默認和靜態方法。

  • 最終變量: 在 Java 接口中聲明的變量默認是最終的。抽象類可能包含非最終變量。

  • 變量類型: 抽象類可以有final、non-final、靜態和非靜態變量。接口只有靜態和最終變量。

  • 實現: 抽象類可以提供接口的實現。接口不能提供抽象類的實現。

  • 繼承 vs 抽象:  Java 接口可以使用關鍵字“implements”來實現,抽象類可以使用關鍵字“extends”進行擴展。

  • 多重實現: 一個接口只能擴展另一個Java接口,一個抽象類可以擴展另一個Java類并實現多個Java接口。

  • 數據成員的可訪問性: 默認情況下,Java 接口的成員是公共的。Java 抽象類可以具有私有、受保護等類成員。

import java.io.*;

abstract class Shape {

	String objectName = " ";

	Shape(String name) { this.objectName = name; 

        }

	public void moveTo(int x, int y){

		System.out.println(this.objectName + " "

						+ "已移至"

						+ " x = " + x + " and y = " + y);

	}

	abstract public double area();

	abstract public void draw();

}



class Rectangle extends Shape {

	int length, width;

	Rectangle(int length, int width, String name){

		super(name);

		this.length = length;

		this.width = width;

	}

	@Override public void draw(){

		System.out.println("矩形已繪制");

	}

	@Override public double area(){

		return (double)(length * width);

	}

}



class Circle extends Shape {

	double pi = 3.14;

	int radius;

	Circle(int radius, String name){

		super(name);

		this.radius = radius;

	}

	@Override public void draw(){

		System.out.println("圓形已繪制");

	}

	@Override public double area(){

		return (double)((pi * radius * radius) / 2);

	}

}



class HY {

	public static void main(String[] args){

		Shape rect = new Rectangle(2, 3, "Rectangle");

		System.out.println("矩形面積:"

						+ rect.area());

		rect.moveTo(1, 2);

		System.out.println(" ");

		Shape circle = new Circle(2, "Circle");

		System.out.println("圓的面積:"

						+ circle.area());

		circle.moveTo(2, 4);

	}

}

輸出:

矩形面積:6.0

矩形已移至 x = 1 和 y = 2

圓的面積:6.28

圓已移至 x = 2 和 y = 4

如果我們在矩形和圓形之間沒有任何通用代碼,請使用界面。

import java.io.*;

interface Shape {

	void draw();

	double area();

}

class Rectangle implements Shape {

	int length, width;

	Rectangle(int length, int width){

		this.length = length;

		this.width = width;

	}

	@Override public void draw(){

		System.out.println("矩形已繪制");

	}

	@Override public double area(){

		return (double)(length * width);

	}

}

class Circle implements Shape {

	double pi = 3.14;

	int radius;

	Circle(int radius) { this.radius = radius; }



	@Override public void draw(){

		System.out.println("圓形已繪制");

	}



	@Override public double area(){

		return (double)((pi * radius * radius) / 2);

	}

}

class HY {

	public static void main(String[] args){

		Shape rect = new Rectangle(2, 3);

		System.out.println("矩形面積:"

						+ rect.area());

		Shape circle = new Circle(2);

		System.out.println("圓的面積:"

						+ circle.area());

	}

}

輸出:

矩形面積:6.0

圓的面積:6.28

什么時候用什么?

如果以下任何陳述適用于您的情況,請考慮使用抽象類:  

  • java應用程序中,有一些相關的類需要共享一些代碼行,那么你可以將這些代碼行放在抽象類中,并且這個抽象類應該由所有這些相關類進行擴展。

  • 您可以在抽象類中定義非靜態或非最終字段,以便您可以通過方法訪問和修改它們所屬的對象的狀態。

  • 您可以期望擴展抽象類的類具有許多公共方法或字段,或者需要除 public 之外的訪問修飾符(例如 protected private)。

如果以下任何陳述適用于您的情況,請考慮使用接口:  

  • 它是一個完全的抽象,接口中聲明的所有方法都必須由實現此接口的類來實現。

  • 一個類可以實現多個接口。它被稱為多重繼承。

  • 您想指定特定數據類型的行為,但不關心誰實現其行為。

以上是“Java中抽象類和接口有哪些區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍城县| 平原县| 芒康县| 来凤县| 和林格尔县| 佛教| 汉寿县| 和政县| 房山区| 饶阳县| 北票市| 榕江县| 清苑县| 聊城市| 普宁市| 大庆市| 长岛县| 沐川县| 天柱县| 固始县| 灵宝市| 桓台县| 阳新县| 芜湖市| 砀山县| 海林市| 综艺| 拉萨市| 盐边县| 牡丹江市| 丰镇市| 定兴县| 黄陵县| 广饶县| 吉木乃县| 宁强县| 莱西市| 隆化县| 博罗县| 莆田市| 商洛市|