面向对象之接口

接口

概述
	接口提供额外功能
特点
	1.接口用interface关键字修饰
		格式:interface 接口名{}
	2.实现接口用implements关键字修饰
    	格式:class 类名 implement 接口名{}
    3.接口不能实例化
    	使用多态的形式进行实例化
    4.接口的子类
    	可以是抽象类
    	也可以是具体类 实现接口中的所有抽象方法
成员特点
	成员变量
		只能是常量 默认被public static final修饰
	构造方法
		没有构造方法
	成员方法
		只能是抽象方法 默认被public abstract修饰

类与类,类与接口,接口与接口的关系

a:类与类:
	可以单继承 多层继承
b:类与接口:
	可以实现接口 
	可以单实现 多实现
	一个类可以同时继承和实现接口
c:接口与接口:
	可以单继承 多继承

继承和接口

子类继承父类就自动继承了父类的成员
子类需要扩展功能时 通过实现接口的方式去扩展
接口是对Java单继承的一种补充
public class JichengJiekou {
    public static void main(String[] args) {
        LittleDog littleDog = new LittleDog();
        littleDog.lookDoor();
        littleDog.swim();
    }
}
/*
狗会看门
通过学习 狗可以游泳了
*/
class Dog{
    public void lookDoor(){
        System.out.println("狗会看门");
    }
}
//接口
interface Fish{
    void swim();
}
class LittleDog extends Dog implements Fish{
    //继承Dog类 实现Fish接口
    @Override
    public void swim() {
        System.out.println("通过学习 狗可以游泳了");
    }
}

抽象和接口

成员区别
	抽象类
		成员变量:可以是变量 也可以是常量
		构造方法:有
		成员方法:可以抽象,也可以非抽象
	接口
		成员变量:只可以常量
		成员方法:只可以抽象
理念
	抽象类 is a 继承
	接口 like a 扩展
public class ChouxiangJikou {	
	public static void main(String[] args) {
        LittleDog littleDog = new LittleDog();
        littleDog.lookDoor();
        littleDog.swim();
    }
}
/*
狗会看门
通过学习 狗可以游泳了
*/
//抽象类
abstract class Dog{
    public abstract void lookDoor();
}
//接口
interface Fish{
    void swim();
}
class LittleDog extends Dog implements Fish{
    //抽象类方法重写
    @Override
    public void lookDoor() {
        System.out.println("狗会看门");
    }
    //接口方法重写
    @Override
    public void swim() {
        System.out.println("通过学习 狗可以游泳了");
    }
}

多态和接口

public class DuotaiJikou {
    /*Usb接口 有一个work方法 给Usb数组中存放 Phone和相机对象 
    Phone类还有一个特有的方法call()
    请遍历Usb数组如果是Phone对象 除了调用Usb接口定义的方法外
    还需要调用Phone特有方法call
    */
    public static void main(String[] args) {
        Usb[] usbs = new Usb[2];
        usbs[0] = new Phone();
        usbs[1] = new Camera();
        //遍历数组
        for (int i = 0; i < usbs.length; i++) {
            usbs[i].work();
            //判断usbs[i]的类型是Phone类
            if (usbs[i] instanceof Phone){
                //向下转型
                ((Phone)usbs[i]).call();
            }
        }
    }
}
/*
手机工作中
手机可以打电话
相机工作中
*/
interface Usb{
    void work();
}
class Phone implements Usb{
    //接口方法重写
    @Override
    public void work() {
        System.out.println("手机开始工作");
    }
    //特有方法
    public void call(){
        System.out.println("手机可以打电话");
    }
}
class Camera implements Usb{
    //接口方法重写
    @Override
    public void work() {
        System.out.println("相机开始工作");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值