java实现多继承

java实现多继承

1,多层继承
就是多个单继承积累,最下层在子类能具有上层内在特征,但这种方法重复高,一般不去用
2、内部类
一个类要继承多个类,在这个类的内部写多个内部类,然后让这些内部类都继承不同的类。

class dota {
    private String str = "let's play some dota";
 
    public void play() {
        System.out.println(str);
        System.out.println("好呀好呀");
    }
}
class lol {
    private String str2 = "let's play some lol";
    public void play() {
        System.out.println(str2);
        System.out.println("不约");
    }
}
class player {//实现多继承
    class dotar extends dota {//内部类继承一个
        public void play() {
            super.play();
        }
    }
    class loler extends lol {//内部类继承一个
        public void play() {
            super.play();
        }
    }
    public void play() {
        dotar d = new dotar();
        d.play();
        loler l = new loler();
        l.play();
    }
}
public class MultiExtendTest1 {
    public static void main(String[] args) {
        player p = new player();
        p.play();
    }
}

3、通过接口

interface Dota{
    void play();
}
interface Lol{
    void play();
}
interface test extends Dota,Lol{
    void sayhi();
}
class Player implements test,Dota,Lol{
    public void play(){
        System.out.println("let's play some dota");
    }
    public  void sayhi(){
        System.out.println("hi");
    }
}
public class MultiExtendTest2{
    public static void main(String[] args) {
        Player p=new Player();
        p.play();
        p.sayhi();
    }
}

接口的特性

和抽象类一样,接口不能实例化,接口是特殊的抽象类
如果一个类继承了接口,必须重写实现接口中的所有方法
接口没有构造函数,抽象类可以有
接口的属性都是默认static final,在定义时指定初始值,接口中只有常量,接口的方法自动用public abstract修饰,只有全局抽象方法
接口只有方法的声明,没有方法体
抽象类可以在不提供接口方法实现的情况下实现接口

抽象类和接口的区别
1、接口没有方法体只有方法的声明,并且默认是public static,但在java8以后接口有了默认方法(用default修饰),抽象类可以有构造方法,静态方法,普通方法。
接口可以有抽象方法,默认方法,静态方法
抽象类可以有普通方法,抽象方法,静态方法,构造方法

2、public static final 修饰,接口中的属性都是默认被public static final修饰的,而抽象类的成员变量可以有不同类型的
3、接口不能有初始化块,抽象方法有初始化块
4、一个类只能继承一个抽象类,能实现多个接口
5、抽象类是可以被实例化的,但不是通过new,而是通过子类实例化前要实例化他的父类。接口是不能被实例化的,它都没有构造方法
什么时间使用接口什么时间使用抽象类
1、当你有默认方法的实现,就使用抽象类
2、当你的基本功能要不断的改变就使用抽象类,如果使用接口,那么基本功能经常改变,就需要修改实现接口的全部类
扩展 非静态代码块在执行构造方法之前执行一次

int和Integer
int是基本数据类型,Integer是int的包装类
Integer需要实例化后才能用,int不需要
Integer的默认值是null, int的默认值是0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值