4.3抽象類abstract和介面interface定義implements實現介面中的抽象方法
阿新 • • 發佈:2019-01-07
定義一個類時,常常需要定義一些方法描述類的行為特徵,這些方法的實現方式是無法確定的。Java允許在定義方法時不寫方法體,不包含方法體的方法為抽象方法,抽象方法用abstract修飾
格式:
abstract void shout( ); //定義抽象方法shout
//定義抽象類animal
abstract class animal
{
//定義抽象方法shout()
abstract int shout();//不包含方法體的抽象方法
}
包含方法體的類必須宣告為抽象類,但抽象類可以不包含任何抽象方法
抽象類是不可以被例項化的,抽象類中有可能包含抽象方法,抽象方法是沒有方法體的,不可以被呼叫。
如何實現抽象類中的抽象方法
abstract class animal
{
//定義抽象方法shout
abstract void shout();
}
class Dog extends animal
{
//實現抽象方法
void shout()
{
System.out.println("旺旺~");
}
}
public class Example10
{
public static void main(String []args)
{
Dog p = new Dog();
p.shout();
}
}
4.3.2介面
如果抽象類中所有方法都是抽象的,那麼可以將這個類用另外另外一種方式來定義,介面
interface animal
{
int ID = 1;//定義全域性常量
void breathe();//定義抽象方法
void run();
}
介面中定義的方法和變數都包含一些預設修飾符。介面中定義的方法預設使用public abstract來修飾,即抽象方法,介面中的變數用public static final修飾,這個值是不能改變的,是一個全域性常量。
呼叫介面中的方法:
因為介面中的都是抽象方法,所以不能通過例項化物件直接呼叫介面中的方法,這時需要定義一個類,並使用implement實現介面中的抽象方法。
//定義animal介面
interface animal
{
int ID = 1 ;
void breathe();
void run();
}
//dog類實現animal介面,
class Dog implements animal
{
//實現breathe的方法
public void breathe()
{
System.out.println("狗在呼吸");
}
//實現run方法
public void run()
{
System.out.println("狗在跑");
}
}
public class Example11
{
public static void main(String []args)
{
Dog dog = new Dog();//建立一個dog例項化物件
dog.breathe();//呼叫dog類中的breathe方法
dog.run();
}
}
介面之間的繼承關係
//定義animal介面
interface animal
{
int ID = 1 ;
void breathe();
void run();
}
//定義LanfdAnimal介面並繼承animal介面
interface LandAnimal extends animal
{
void lijia();//定義抽象方法
}
//定義dog實現LandAnimal介面,使用implements實現介面
class Dog implements LandAnimal
{
public void breathe()
{
System.out.println("狗在呼吸");
}//實現breathe的方法
public void run()
{
System.out.println("狗在跑");
}//實現run方法
public void lijia()
{
System.out.println("狗生活在陸地上");
}//實現lijia方法
}
public class Example11
{
public static void main(String []args)
{
Dog dog = new Dog();//建立一個例項物件
dog.breathe();//呼叫breathe方法
dog.run();//呼叫run方法
dog.lijia();//呼叫lijia方法
}
}
1、介面的方法都是抽象的,不能例項化物件
2、當一個類實現介面時,如果這個類是抽象類,則實現介面中的部分方法就可以,否則,實現介面中的所有方法
這句具體我也不明白······
3、一個類通過implements關鍵字實現介面時,可以實現多個介面,被實現的多個介面要用,隔開
格式如下:
interface Run
{
//程式程式碼
}
interface Fly
{
//程式程式碼
}
class Bird implements Run,Fly
{
// 程式程式碼
}
4、一個介面可以通過extends關鍵字繼承多個介面,介面之間用,隔開。
interface Running
{
//程式程式碼
}
interface Flying
{
//程式程式碼
}
interface Eating extends Running,Flying
{
//程式程式碼
}
5、一個類在繼承另一個類的時候同時還可以實現介面,此時,extends關鍵字位於implements關鍵字之間
class Dog extends canidae implements animal//先繼承,再實現
{
程式程式碼
}