D0819-接口与多态

接口

接口中的方法全都是抽象方法,用来指定一些规则,让子类去重写。接口的作用主要体现在一下两点

1.指定规则
2.利用这些规则给类做功能扩展

接口的定义和使用

接口使用interface关键字来定义,使用implements来实现。

//定义接口
public interface Inter{
    //接口中的抽象方法
    public abstract void method();  //可以省略 public abstract ,接口会默认添加
}
//实现接口
public class InterImpl implements Inter{
    //复写抽象方法
    public void method(){
        System.out.println("复写实现类方法");
    }
}

接口的成员特点

1.接口中的成员变量,默认被 public static final 修饰
2.接口中的方法,默认被 public abstract 修饰
3.接口中不能写构造方法

JDK7以后对接口做了一些更新
	JDK7: 接口中的方法全都是抽象方法,子类必须重写
	
	JDK8: 允许在接口中写默认方法(被 public default 修饰的方法),可选重写
		  如果多个接口中有相同的默认方法,子类必须重写
	
		  允许在接口中写静态方法(被 public static 修饰),使用接口名调,可选重写
	
	JDK9: 允许在接口中写私有方法 (被 private 修饰),只能在本接口中使用
	      接口中的方法可用的权限修饰符只有 publicprivate 两种,不写会默认用 public , 虽然也有可能出现 default ,但其并不作为权限修饰符使用,只是一种固定写法
          接口中的成员方法只能用 public 修饰,不写会默认用 public

类与接口的关系

1.类与类的关系:只能单继承
2.类与接口的关系:多实现关系
3.接口与接口关系:多继承关系

子类在继承父类的同时也可以实现接口

多态

同一个对象可以用多种数据类型(父类、接口)进行接收。

多态的前提
	1.要有继承、实现的关系
	2.要有方法重写
	3.父类/接口接收子类对象
		Animal a=new Dog(); //Animal是Dog的父类		
		Usb  u=new Mouse(); //Usb是Mouse的接口

多态的成员访问特点

1.成员变量的访问特点
	编译看左边(父类),运行也看左边(父类)
    大白话:父类有就用父类的,父类没有就报错了
    调用时需注意
    public class Test {
    public static void main(String[] args) {
        Usb接口 u = new U();
        // u.a;                  //报错,not a statement(不是声明)
        int b = u.a;
        System.out.println(u.a);
        }
    }
    
2.成员本方法的访问特点
	编译看左边(父类),运行看右边(子类)
    大白话:子类复写父类方法,就执行子类的方法。

多态的好处和弊端

1.好处:提高了代码的扩展性
	把方法的参数写成父类、接口,调用方法时可以传递任意的子类对象。

2.弊端:不能调用子类特有的方法  需要向下转型后方可调用

多态的转型

1.向上转型
	Animal a=new Dog(); //多态的写法,就是向上转型

2.向下转型
	//判断变量a具体是什么类型
	if(a instanceof Dog){
        Dog dog=(Dog)a;
        dog.swimming();
    }
  
注意:多态的转型并不是随意的,它是一个还原的动作。原本是什么类型,才能转换为什么类型。

3.多态转型可能会遇到的问题
	ClassCastException:  多态的转型出现的问题,类型转换错了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值