4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法

本文介绍了Java中的抽象类和接口。抽象类通过abstract关键字声明,可能包含抽象方法,不可被实例化。接口则是一种全抽象的类,所有方法默认为public abstract,变量为public static final。接口可以通过implements来实现,一个类可以实现多个接口,同时接口也可以继承多个接口。类在继承其他类的同时可以实现接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个类时,常常需要定义一些方法描述类的行为特征,这些方法的实现方式是无法确定的。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//先继承,再实现
{
程序代码
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值