日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

1.抽象類的定義

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

2.簡單實例

Shape類

package 抽象類;

/*

題目:

建立一個Shape抽象類,代表形狀,求面積和周長兩個方法

建立一個正方形類, 長方形 ,圓類 作為抽象類的子類,

通過抽象類來求面積和周長

*/

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) {

//求正方形的面積和周長

Square square = new Square(3);

double area = square.getArea();

double zc = square.getPan();

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

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

}

}

3.總結(jié):

1. 抽象類不能被實例化

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

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

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

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

4.接口的概念

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

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

補充:JDK1.8中對接口增加的特性:

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

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

5.接口與抽象類的異同

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

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

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

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

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

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

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

6.簡單示例

AnimalAction接口,代表動物行為

package 接口實例;

public interface AnimalAction {

//吃

void eat();

//public void eat();

//喝

void drink();

}

AnimalLove接口,代表動物的求偶方式

package 接口實例;

public interface AnimalLove {

//求偶方式

void LoveType();

}

AnimalSleep接口,代表動物的作息方式

package 接口實例;

public interface AnimalSleep {

//作息方式

String sleep();

}

Bird類

package 接口實例;

public class Bird implements AnimalAction,AnimalLove,AnimalSleep{

@Override

public String sleep() {

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

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 接口實例;

public class Cat implements AnimalAction,AnimalSleep,AnimalLove{

@Override

public void LoveType() {

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

}

@Override

public String sleep() {

String string="我是貓,白天睡覺,晚上活動";

return string;

}

@Override

public void eat() {

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

}

@Override

public void drink() {

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

}

}

View Code

Test類,用于測試

package 接口實例;

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)型,自動的

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)型,強制轉(zhuǎn)換的

Bird xBird = (Bird)action;

xBird.LoveType();

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

}

}

運行結(jié)果:

參考文章:

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

來源: https://www.cnblogs.com/YorkZhangYang/p/12741692.html

總結(jié)

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

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