javase02接口

抽象类是半抽象,接口是完全抽象。
类与类之间叫继承,关键字extends
类与接口叫实现(可以看做继承),关键字implements

基础语法:修饰符列表 interface 接口名()
接口支持多继承,一个接口可以继承多个接口。
一个非抽象类实现接口必须实现所有方法。
使用接口时可以使用多态(父类型引用指向子类型对象)
接口包含两部分内容:常量,抽象方法(没有方法体)。没有其他的了。

接口中所有的元素都是public公开的。public abstract和final可以省略。但是子类中public不能省略(继承的方法的访问权限只能更高不能低)

继承与实现(接口)在一起怎么写:
eg:class 猫extends动物implements翅膀,创建对象时用翅膀(接口)创建。
eg:class蛇extends动物,不用翅膀(虽然没有extends,也是有的默认继承object)

接口在开发中的作用(类似多态:面向抽象编程)
接口正好完全抽象,面向抽象编程也可以修改为面向接口编程。(接口可插拔,高扩展低耦合)
eg:吃饭,菜单是一个接口(菜单上有菜的抽象照片),顾客面向接口调用(顾客点菜),厨师负责实现这个接口(把菜做好)。
顾客不需要找厨师,只要通过抽象的菜单就能与厨师沟通。

public class test01 {
    public static void main(String[] args) {
        FoodMenu cooker1=new UsaCooker();//ChinaCooker();想吃中餐只需换一个单词
        Customer customer=new Customer(cooker1);
        customer.order();
    }
}
interface FoodMenu{
    void chaodan();
    void rousi();
}
/*厨师是接口的实现者*/
class ChinaCooker implements FoodMenu{
    public void chaodan(){
        System.out.println("中餐厨师做的炒蛋");
    }
    public void rousi(){
        System.out.println("中餐厨师做的鱼香肉丝");
    }
}
class UsaCooker implements FoodMenu{
    public void chaodan(){
        System.out.println("西餐厨师做的炒蛋");
    }
    public void rousi(){
        System.out.println("西餐厨师做的鱼香肉丝");
    }
}
/*顾客有一个菜单*/
class Customer{
    private FoodMenu foodMenu;

    public Customer() {
    }

    public Customer(FoodMenu foodMenu) {
        this.foodMenu = foodMenu;
    }

    public FoodMenu getFoodMenu() {
        return foodMenu;
    }

    public void setFoodMenu(FoodMenu foodMenu) {
        this.foodMenu = foodMenu;
    }
    public void order(){//点菜
        //FoodMenu f=this.getFoodMenu();//拿到菜单
        //也可以不调用,本类中的私有属性可以直接访问
        foodMenu.chaodan();
        foodMenu.rousi();
    }
}

抽象类与接口的区别
抽象类:半抽象,有构造方法,单继承
接口:完全抽象,无构造方法,多继承,只允许出现常量和抽象方法。
一个类可以实现多个接口,一个抽象类只能继承一个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值