最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java抽象類和接口的區(qū)別詳情

 更新時間:2021年11月25日 08:58:56   作者:海擁  
這篇文章主要介紹的是Java抽象類和接口的區(qū)別詳情,

1、抽象類 vs 接口?

  • 方法類型: 接口只能有抽象方法。抽象類可以有抽象和非抽象方法。從 Java 8 開始,它也可以有默認和靜態(tài)方法。
  • 最終變量: 在 Java 接口中聲明的變量默認是最終的。抽象類可能包含非最終變量。
  • 變量類型: 抽象類可以有final、non-final、靜態(tài)和非靜態(tài)變量。接口只有靜態(tài)和最終變量。
  • 實現(xiàn): 抽象類可以提供接口的實現(xiàn)。接口不能提供抽象類的實現(xiàn)。
  • 繼承 vs 抽象:? Java 接口可以使用關(guān)鍵字“implements”來實現(xiàn),抽象類可以使用關(guān)鍵字“extends”進行擴展。
  • 多重實現(xiàn): 一個接口只能擴展另一個Java接口,一個抽象類可以擴展另一個Java類并實現(xiàn)多個Java接口。
  • 數(shù)據(jù)成員的可訪問性: 默認情況下,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應用程序中,有一些相關(guān)的類需要共享一些代碼行,那么你可以將這些代碼行放在抽象類中,并且這個抽象類應該由所有這些相關(guān)類進行擴展。
  • 您可以在抽象類中定義非靜態(tài)或非最終字段,以便您可以通過方法訪問和修改它們所屬的對象的狀態(tài)。
  • 您可以期望擴展抽象類的類具有許多公共方法或字段,或者需要除 public 之外的訪問修飾符(例如 protected private)。

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

  • 它是一個完全的抽象,接口中聲明的所有方法都必須由實現(xiàn)此接口的類來實現(xiàn)。
  • 一個類可以實現(xiàn)多個接口。它被稱為多重繼承。
  • 您想指定特定數(shù)據(jù)類型的行為,但不關(guān)心誰實現(xiàn)其行為。

到此這篇關(guān)于Java抽象類和接口的區(qū)別詳情的文章就介紹到這了,更多相關(guān)Java抽象類和接口的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Gateway組件的三種使用方式實例詳解

    Spring Cloud Gateway組件的三種使用方式實例詳解

    Spring Cloud Gateway是 Spring 官方基于 Spring5.0 、 SpringBoot2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān)旨在為微服務框架提供一種簡單而有效的統(tǒng)一的API 路由管理方式,統(tǒng)一訪問接口,這篇文章主要介紹了Spring Cloud Gateway組件的三種使用方式,需要的朋友可以參考下
    2024-01-01
  • 基于Java代碼操作Redis過程詳解

    基于Java代碼操作Redis過程詳解

    這篇文章主要介紹了基于Java代碼操作Redis過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • SpringCloud openfeign相互調(diào)用實現(xiàn)方法介紹

    SpringCloud openfeign相互調(diào)用實現(xiàn)方法介紹

    在springcloud中,openfeign是取代了feign作為負載均衡組件的,feign最早是netflix提供的,他是一個輕量級的支持RESTful的http服務調(diào)用框架,內(nèi)置了ribbon,而ribbon可以提供負載均衡機制,因此feign可以作為一個負載均衡的遠程服務調(diào)用框架使用
    2022-11-11
  • java 重定義數(shù)組的實現(xiàn)方法(與VB的ReDim相像)

    java 重定義數(shù)組的實現(xiàn)方法(與VB的ReDim相像)

    java 重定義數(shù)組的實現(xiàn)方法(與VB的ReDim相像),需要的朋友可以參考一下
    2013-04-04
  • Java基礎之Unsafe內(nèi)存操作不安全類詳解

    Java基礎之Unsafe內(nèi)存操作不安全類詳解

    Java是面向?qū)ο笳Z言,在使用Java編程時,大多數(shù)情況下都不會直接操作內(nèi)存,而且Java也不提倡直接操作內(nèi)存,但是Java中到底有沒有可以直接操作內(nèi)存的工具類呢?有!Java中提供Unsafe類可以用來來直接操作內(nèi)存,文中詳細介紹了Unsafe內(nèi)存操作不安全類,需要的朋友可以參考下
    2021-06-06
  • Spring AI 入門學習指南

    Spring AI 入門學習指南

    本文介紹了如何使用SpringAI和Ollama進行AI開發(fā),包括如何配置和使用聊天、圖像、語音轉(zhuǎn)文字和文字轉(zhuǎn)語音模型,以及如何在Java項目中集成Ollama模型,感興趣的朋友一起看看吧
    2024-11-11
  • Shiro安全框架的主要組件及認證過程簡介

    Shiro安全框架的主要組件及認證過程簡介

    這篇文章主要介紹了Shiro安全框架的主要組件及認證過程簡介,Shiro?是一個強大靈活的開源安全框架,可以完全處理身份驗證、授權(quán)、加密和會話管理,本文就來介紹一下此框架的核心組成,需要的朋友可以參考下
    2023-08-08
  • LibrarySystem圖書管理系統(tǒng)開發(fā)(一)

    LibrarySystem圖書管理系統(tǒng)開發(fā)(一)

    這篇文章主要為大家詳細介紹了LibrarySystem圖書管理系統(tǒng)開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Spring Cloud超詳細i講解Feign自定義配置與使用

    Spring Cloud超詳細i講解Feign自定義配置與使用

    這篇文章主要介紹了SpringCloud Feign自定義配置與使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • IntelliJ IDEA 2021.1 EAP 4 發(fā)布:字體粗細可調(diào)整Git commit template 支持

    IntelliJ IDEA 2021.1 EAP 4 發(fā)布:字體粗細可調(diào)整Git commit template 支持

    這篇文章主要介紹了IntelliJ IDEA 2021.1 EAP 4 發(fā)布:字體粗細可調(diào)整,Git commit template 支持,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論

巫山县| 龙海市| 山西省| 南澳县| 镇原县| 黔东| 三原县| 黄石市| 淮滨县| 军事| 湖北省| 固安县| 平果县| 赞皇县| 大庆市| 南宫市| 阳泉市| 赤城县| 和林格尔县| 光泽县| 北海市| 沂水县| 康乐县| 来宾市| 马鞍山市| 德惠市| 武宣县| 沧源| 清徐县| 柯坪县| 海安县| 仁化县| 黄山市| 扶余县| 盘锦市| 堆龙德庆县| 荥阳市| 漳平市| 名山县| 闻喜县| 从江县|