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();
}
运行结果如下: