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

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

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

1、抽象類 vs 接口?

  • 方法類型: 接口只能有抽象方法。抽象類可以有抽象和非抽象方法。從 Java 8 開始,它也可以有默認(rèn)和靜態(tài)方法。
  • 最終變量: 在 Java 接口中聲明的變量默認(rèn)是最終的。抽象類可能包含非最終變量。
  • 變量類型: 抽象類可以有final、non-final、靜態(tài)和非靜態(tài)變量。接口只有靜態(tài)和最終變量。
  • 實(shí)現(xiàn): 抽象類可以提供接口的實(shí)現(xiàn)。接口不能提供抽象類的實(shí)現(xiàn)。
  • 繼承 vs 抽象:? Java 接口可以使用關(guān)鍵字“implements”來實(shí)現(xiàn),抽象類可以使用關(guān)鍵字“extends”進(jìn)行擴(kuò)展。
  • 多重實(shí)現(xiàn): 一個接口只能擴(kuò)展另一個Java接口,一個抽象類可以擴(kuò)展另一個Java類并實(shí)現(xiàn)多個Java接口。
  • 數(shù)據(jù)成員的可訪問性: 默認(rèn)情況下,Java 接口的成員是公共的。Java 抽象類可以具有私有、受保護(hù)等類成員。

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應(yīng)用程序中,有一些相關(guān)的類需要共享一些代碼行,那么你可以將這些代碼行放在抽象類中,并且這個抽象類應(yīng)該由所有這些相關(guān)類進(jìn)行擴(kuò)展。
  • 您可以在抽象類中定義非靜態(tài)或非最終字段,以便您可以通過方法訪問和修改它們所屬的對象的狀態(tài)。
  • 您可以期望擴(kuò)展抽象類的類具有許多公共方法或字段,或者需要除 public 之外的訪問修飾符(例如 protected private)。

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Spring AI 入門學(xué)習(xí)指南

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

    Shiro安全框架的主要組件及認(rèn)證過程簡介

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

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

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

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

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

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

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

最新評論

岳阳县| 巴林左旗| 沂水县| 姚安县| 合水县| 年辖:市辖区| 若尔盖县| 湘西| 枣庄市| 台安县| 巢湖市| 怀远县| 哈巴河县| 黄骅市| 天气| 兰州市| 安塞县| 鹤峰县| 晋城| 平安县| 花垣县| 泸溪县| 承德市| 海晏县| 宁强县| 赣榆县| 浦县| 洛南县| 东莞市| 凤冈县| 贵州省| 措勤县| 萨迦县| 二连浩特市| 贞丰县| 桐梓县| 开平市| 宁南县| 从化市| 分宜县| 饶阳县|