<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在Java中,如果一個類被abstract修飾稱為抽象類,抽象類中被abstract修飾的方法稱為抽象方法,抽象方法不用給出方法體。
//抽象類:被abstract修飾的類 public abstract class Shape{ //抽象方法:被abstract修飾的方法,沒有方法體 public abstract void drew(); //抽象類中也可以增加普通方法和屬性 public double getArea(){ return area; } }
【注】抽象類也可以包括普通的方法和屬性,甚至構造方法
抽象類本身不能被範例化,要想使用,只能建立該抽象類的子類,然後通過子類重寫抽象類中的抽象方法。使用抽象類相當於多了一層編譯器的檢驗。
有些情況下實際工作不應該由父類別完成,而應由子類完成,如果誤用為父類別,父類別為抽象類時就會在範例化時報錯。
介面就是公共的行為規範標準,大家在實現的時候,只要符合規範標準,就可以通用。在Java中,介面可以看成:多個類的公共規範,是一種參照資料型別。使用關鍵字interface。
public interface 介面名稱{ // 抽象方法 public abstract void method1(); // public abstract 是固定搭配,可以不寫 public void method2(); abstract void method3(); void method4(); // 注意:在介面中上述寫法都是抽象方法, }
【注】
介面不能直接使用,需要有一個類來實現該介面,實現介面中所有的抽象方法
public class 類名稱 implements 介面名稱{
//……
}
【注】子類與父類別之間是extends繼承關係,類與介面之間是implements實現關係
Java中,類與類是單繼承的關係,一個子類只能有一個父類別,即Java不支援多繼承。但是一個類可以實現多個介面。
class Animal{ protected String name; public Animal(String name){ this.name=name; } } interface IFlying{ void fly(); } interface IRunning{ void run(); } interface ISwimming{ void swim(); } class Duck extends Animal implements IFlying,IRunning,ISwimming{ public Duck(String name) { super(name); } @Override public void fly() { System.out.println("Duck正在飛!"); } @Override public void run() { System.out.println("Duck正在跑!"); } @Override public void swim() { System.out.println("Duck正在游泳!"); } }
【注】一個類可以實現多個介面,每個介面中的抽象方法都要實現。(使用ctrl+i快速實現介面)
在Java中,類與類之間是單繼承,一個類可以實現多個介面,介面與介面之間可以多繼承。用介面可以達到多繼承的的目的。
interface Animal extends IRunning,IFlying{ //…… }
介面繼承介面,達到複用的效果,使用關鍵字extends。
import java.util.Arrays; class Student implements Comparable{ private String name; private int age; public Student(String name,int age){ this.name=name; this.age=age; } @Override //重寫toString方法 public String toString() { return "Student{" + "name='" + name + ''' + ", age=" + age + '}'; } @Override //重寫Comparable中的compareTo方法 public int compareTo(Object o) { Student x=(Student)o; if(this.age>x.age){ return -1; }if(this.age<x.age){ return 1; }else{ return 0; } } } public class TestDemo { public static void main(String[] args) { Student[] students=new Student[3]; students[0]=new Student("zhangsan",18); students[1]=new Student("lisi",22); students[2]=new Student("liming",21); Arrays.sort(students); System.out.println(Arrays.toString(students)); } }
當我們對students進行排序時,編譯器不能確定通過什麼排序,此時會報錯,需要重寫Comparable介面中的compareTo方法。
Object類中存在一個clone方法,掉哦用這個方法可以建立一個物件的拷貝。要想合法呼叫clone方法,必須先實現Cloneable介面。否則會丟擲CloneNotSupportedException異常。
class Person implements Cloneable{ private String name; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + ''' + '}'; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } public class TestDemo1 { public static void main(String[] args) throws CloneNotSupportedException { Person person1=new Person("zhangsan"); Person person2=(Person)person1.clone(); } }
Cloneable為空介面。空介面:標記介面。證明當前類是可以被克隆的。此時克隆的物件提供了副本,修改其中的資訊不會對原資訊產生影響。Cloneable拷貝出的物件是一份“淺拷貝”。
Object類是Java預設提供的一個類。Java裡面除了Object類,所有的類都是存在繼承關係的。預設繼承Object父類別。如果要列印物件中的內容,可以直接重寫Object類中的toString方法。
【注】使用Object可以接受所有類的物件
物件比較equals()方法
在Java中,==進行比較時:
//Object類中的equals方法 public boolean equals(Object obj){ return (this==obj);//使用參照中的地址直接來比較 }
【注】比較物件中內容是否相同時,一定要重寫equals方法
到此這篇關於Java 超詳細講解抽象類與介面的使用的文章就介紹到這了,更多相關Java 抽象類與介面內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45