日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java中抽象类 接口_java中的抽象类与接口

發(fā)布時(shí)間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中抽象类 接口_java中的抽象类与接口 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.抽象類的定義

在面向?qū)ο蟮母拍钪?#xff0c;所有的對(duì)象都是通過(guò)類來(lái)描繪的,但是反過(guò)來(lái),并不是所有的類都是用來(lái)描繪對(duì)象的,如果一個(gè)類中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類就是抽象類。

2.簡(jiǎn)單實(shí)例

Shape類

package 抽象類;

/*

題目:

建立一個(gè)Shape抽象類,代表形狀,求面積和周長(zhǎng)兩個(gè)方法

建立一個(gè)正方形類, 長(zhǎng)方形 ,圓類 作為抽象類的子類,

通過(guò)抽象類來(lái)求面積和周長(zhǎng)

*/

public abstract class Shape {

public abstract double getArea();//抽象方法

public abstract double getPan();

}

Square類

package 抽象類;

public class Square extends Shape{

protected double len;

Square(double len){

this.len = len;

}

public double getArea(){

return len*len;

}

public double getPan(){

return 4*len;

}

}

Circle類

public class Circle extends Shape{

private double r;

Circle (double r){

this.r = r;

}

public double getArea(){

return Math.PI*r*r;

}

public double getPan(){

return Math.PI*r*2;

}

}

Demo_Test2類

package 抽象類;

public class Demo_Test2 {

public static void main(String[] args) {

//求正方形的面積和周長(zhǎng)

Square square = new Square(3);

double area = square.getArea();

double zc = square.getPan();

System.out.println("正方形的面積:"+area);

System.out.println("正方形的周長(zhǎng):"+zc);

}

}

3.總結(jié):

1. 抽象類不能被實(shí)例化

2. 抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。

3. 抽象類中的抽象方法只是聲明,不包含方法體。

4. 構(gòu)造方法,類方法(用 static 修飾的方法)不能聲明為抽象方法。

5. 抽象類的子類必須給出抽象類中的抽象方法的具體實(shí)現(xiàn),除非該子類也是抽象類。

4.接口的概念

接口是只有全局常量和公共抽象方法的一種特殊類,由于在java中只能使用單繼承的方式,所以增加接口類型,可以讓類實(shí)現(xiàn)多個(gè)接口。

彌補(bǔ)單繼承機(jī)制的不足。在接口中所有的常量都默認(rèn)修飾public static final,所有的方法默認(rèn)修飾public abstract(JDK1.8之前)。

補(bǔ)充:JDK1.8中對(duì)接口增加的特性:

(1)、默認(rèn)方法(default method):JDK 1.8允許給接口添加非抽象的方法實(shí)現(xiàn),但必須使用default關(guān)鍵字修飾;定義了default的方法可以不被實(shí)現(xiàn)子類所實(shí)現(xiàn),但只能被實(shí)現(xiàn)子類的對(duì)象調(diào)用;如果子類實(shí)現(xiàn)了多個(gè)接口,并且這些接口包含一樣的默認(rèn)方法,則子類必須重寫默認(rèn)方法;

(2)、靜態(tài)方法(static method):JDK 1.8中允許使用static關(guān)鍵字修飾一個(gè)方法,并提供實(shí)現(xiàn),稱為接口靜態(tài)方法。接口靜態(tài)方法只能通過(guò)接口調(diào)用(接口名.靜態(tài)方法名)。

5.接口與抽象類的異同

相同點(diǎn):(1)接口與抽象類都不能直接實(shí)例化.

不同點(diǎn):(1)接口中的方法全部是抽象方法,抽象類中的方法不全是。

(2)一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但是一個(gè)子類只能繼承一個(gè)父類。

(3)接口中的成員權(quán)限都是public,抽象類中不一定。

(4)接口強(qiáng)調(diào)特定功能的實(shí)現(xiàn),而抽象類強(qiáng)調(diào)所屬關(guān)系。

(5)接口成員變量默認(rèn)為public static final,必須賦初值,不能被修改;其所有的成員方法都是public、abstract的。抽象類中成員變量默認(rèn)default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號(hào)結(jié)尾,不帶花括號(hào)。

(6)接口是對(duì)行為的抽象,抽象類是對(duì)一類事物的抽象。

6.簡(jiǎn)單示例

AnimalAction接口,代表動(dòng)物行為

package 接口實(shí)例;

public interface AnimalAction {

//吃

void eat();

//public void eat();

//喝

void drink();

}

AnimalLove接口,代表動(dòng)物的求偶方式

package 接口實(shí)例;

public interface AnimalLove {

//求偶方式

void LoveType();

}

AnimalSleep接口,代表動(dòng)物的作息方式

package 接口實(shí)例;

public interface AnimalSleep {

//作息方式

String sleep();

}

Bird類

package 接口實(shí)例;

public class Bird implements AnimalAction,AnimalLove,AnimalSleep{

@Override

public String sleep() {

String string="我是鳥,白天覓食,晚上睡覺(jué)";

return string;

}

@Override

public void LoveType() {

System.out.println("我是鳥,求偶方式是修房子");

}

@Override

public void eat() {

System.out.println("我是鳥,喜歡吃蟲子");

}

@Override

public void drink() {

System.out.println("我是鳥,喝水啄著喝");

}

}

View Code

Cat類

package 接口實(shí)例;

public class Cat implements AnimalAction,AnimalSleep,AnimalLove{

@Override

public void LoveType() {

System.out.println("我是貓,求偶方式是抓老鼠");

}

@Override

public String sleep() {

String string="我是貓,白天睡覺(jué),晚上活動(dòng)";

return string;

}

@Override

public void eat() {

System.out.println("我是貓,喜歡吃魚");

}

@Override

public void drink() {

System.out.println("我是貓,喝水很斯文");

}

}

View Code

Test類,用于測(cè)試

package 接口實(shí)例;

public class Test {

//可以用接口創(chuàng)建的引用作為方法的形參

public void BuruAnimal(AnimalAction action)

{

if (action instanceof Cat) {

Cat cat1 = (Cat) action;

cat1.eat();

}

if (action instanceof Bird) {

Bird bird = (Bird)action;

bird.eat();

}

}

public static void main(String[] args) {

//向上轉(zhuǎn)型,自動(dòng)的

AnimalAction action = new Cat();

action.eat();

action.drink();

//The method sleep() is undefined for the type AnimalAction

//action.sleep();

action = new Bird();

action.eat();

action.drink();

//向下轉(zhuǎn)型,強(qiáng)制轉(zhuǎn)換的

Bird xBird = (Bird)action;

xBird.LoveType();

System.out.println(xBird.sleep());

}

}

運(yùn)行結(jié)果:

參考文章:

標(biāo)簽:java,double,void,接口,action,抽象類,public

來(lái)源: https://www.cnblogs.com/YorkZhangYang/p/12741692.html

總結(jié)

以上是生活随笔為你收集整理的java中抽象类 接口_java中的抽象类与接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。