java中的多继承问题解决方法--接口类

Java中可以多继承吗?

首先回答是否定的,Java中类只有单继承,不能多继承;
可以通过extends关键字可以实现类与类的继承,格式如下:
class 子类名 extends 父类名 {

}
注意:
继承并不能继承父类私有的成员变量和方法;
构造方法需要通过super关键字来调用;

那么这个问题是不是可以解决呢?
Java中提供了接口类:可以实现多个功能的同时实现,类似于继承,但又不是继承;
Java规定:
1.接口类中中的成员变量只能是静态常量(public static final 来修饰);
2.成员方法也只能是抽象方法,没有方法体;
3.接口类中没有构造方法,所以不能用接口创建对象。
格式如下:

interface 接口名 {}  //这是接口类;
class 类名 implements 接口名 {}  //接口的实现。

所以,我们可以通过接口实现类似于多继承的多实现功能,但是我们知道接口类中的方法只能是抽象方法,并没有方法体;难道让子类实现了接口后的每一次都要进行方法的重写吗?
JDK1.8之后提供了default关键字,将其加在方法名之前,就可以对接口的方法添加方法体了,具体举例如下:

//测试类
public class Test {
    public static void main(String[] args) {
        SuperClass superClass = new SuperClass();
        superClass.name="蔡虚坤";
        superClass.age=25;
        System.out.println("大家好,我是"+superClass.name);
        System.out.println("今年"+superClass.age+"岁");
        System.out.println("喜欢");
        superClass.sing();
        superClass.dance();
        superClass.rap();
        superClass.basketball();
        System.out.println("鸡你太美!!");
    }
}
//子类:实现类
public class SuperClass implements AA, BB, CC, DD {
    String name;
    int age;
    @Override
    public void basketball() {
        System.out.println("篮球");

    }
}
//接口类:
public interface AA {
    public default void sing(){//利用default关键字可以添加方法,供子类使用
        System.out.println("唱");
    }
}

public interface BB {
    public  default   void dance(){
        System.out.println("跳");
    }
}

public interface CC {
    public  default void rap(){
        System.out.println("RAP");
    }
}

public interface DD {
    public   void basketball();
}

运行结果如下:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值