抽象类&接口

抽象类

不能被实例化的类,只能被继承

定义:使用关键字abstract修饰类

**被abstract修饰的类就是抽象类

**可以被继承,也可以继承其他类

**不能创建实例

**其他资源和普通类一样


public abstract class Demo7 {
    private String name;
    private String sex;
    private int age;
    
    public void eat(){}
    public void sleep(){}
}

定义:使用abstract修饰方法

**只能存在于抽象类中

**不能有方法体

** 如果子类继承了含有抽象方法的抽象类,那么必须要重写抽象方法

 public abstract void play();

继承抽象类

public class Demo8 extends Demo7{
    public void skill(){
        System.out.println("独特的技能");
    }
    //重写父类中的抽象方式
    @Override
    public void play() {
        System.out.println("我会打游戏");
    }
}

抽象类实际应用

游戏中每个英雄都会有攻击力,防御力,魔抗,法强,血量,蓝量,每个英雄都有自己独特的技能

抽象类

public abstract class Hero {
    private double hp;
    private double mp;
    private int atk;
    private int def;
    private int sr;
    private int sp;
    
    public abstract void q();
    public abstract void w();
    public abstract void e();
    public abstract void r();
}

继承类

public class Play extends Hero{
    @Override
    public void q() {
        System.out.println("屈人之威");
    }

    @Override
    public void w() {
        System.out.println("蓄意轰拳");
    }

    @Override
    public void e() {
        System.out.println("强手裂颅");
    }

    @Override
    public void r() {
        System.out.println("叹为观止");
    }
}

接口

修饰符:interface

特点:

不能被创建对象

只能包含抽象方法

接口只能被实现,实现接口的类必须重写接口中所有抽象方法

实现接口关键字:implements

一个类可以实现多个接口

接口可以继承接口,不能继承类

接口实例

public interface Demo9 {
    public void m1();
}

实现接口

public class Son1 implements Demo9/*一个类可以实现多个接口(,Demo8,Demo7,Demo6)**/{
    @Override
    public void m1() {    //必须重写接口中的方法
        
    }
}

接口的继承

public interface Demo10 extends Demo9{
    //接口只能继承接口
}

总结

抽象类的特点(对比普通类)

**抽象类包含普通类中的所有元素,同时包含抽象方法(普通类没有抽象方法)

**抽象类也有构造器,但是不能被实例化(不能创建对象)

**抽象类可以继承抽象类(只能单继承),不需要实现抽象方法

**普通类继承抽象类,必须要实现抽象方法

**抽象类必然要被继承

**有抽象方法的类必然是抽象类

接口的特点

**接口不能实现接口,因为接口无法实现方法

**接口可以继承接口,还可以有多继承

**一个类实现接口或多个接口,必须实现所有接口中的抽象方法

**一个类继承其他类,还可以同时实现接口

jdk8新特性

给接口种方法提供默认实现,让实现它的类可以不实现该方法(jdk8以上版本)

public interface Demo9 {   //接口
    default void m1() {}   //default  实现方法默认实现
}

接口和抽象类对比

抽象类是对类的一种抽象,接口是对方法的抽象

接口是一系列方法的集合

抽象类可以有普通类中的所有资源,接口只能有抽象方法

抽象类和接口都无法实例化,抽象类有构造,接口没有构造

接口可以被子类多实现,可以多继承多个接口,抽象类只能单继承

抽象类可以实现接口,不能实现抽象方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值