java之多态详解及用处 期末必考

接口:

接口中定义抽象方法,是一组功能的集合,是比抽象类更抽象的‘类’

作用:定义规范  进行功能的扩展(一个类可以实现多个接口) 符合开闭原则 实现多继承

特点:无构造方法    属性都是常量 (不写修饰符时默认public static final修饰)    

接口中方法隐式自动添加public sbastract修饰   

一个接口内不可定义太多方法在(一般一个接口有一个方法)

接口可以继承另一个接口(接口多继承,了解)

好处:(面向接口编程):

  1. 接口将功能的定义与实现分离,提高了程序的维护性和扩展性。
  2. 接口可以强制类必须实现某些行为或规则,保证类行为的一致性。

接口的多实现:解决多继承的弊端(当多个父类中有相同功能时,子类调用会产生不确定性)

类继承类同时实现接口:更为灵活,便于扩展(继承用于多个对象共有的特性,实现用于扩展某个子类独有的功能)

JDK1.8对接口的更新:

JDK7之前接口都是抽象方法,JDK8之后有了默认方法和静态方法。  

默认方法: public default 返回值类型 名(参数){}  用于接口升级,是接口中预留的一个扩展点

默认方法注意事项:

1)默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字。

2)如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写(防止接口冲突)。

静态方法:public static 返回值类型 名(参数){} 让接口来使用,不被继承,也不需要重写

接口和抽象类异同点:

相同:继承体系顶端 不可实例化对象  都可有抽象方法

不同:1) 抽象类中可以有具体方法; 接口只能包含抽象方法(1.7版本及以下)。

2)类与类之间只能单继承,类与接口之间可以多实现,接口和接口之间可以多继承(接口弥补了Java的单继承)。

3)抽象类中的内容, 是某一类事物中应该具备的基本特征。

4)接口是这个事物中的额外内容(功能)。

多态:一类对象的同一个行为,具有多种不同的形态

多态的使用前提:必须有实现或者继承  父类引用指向子类对象  必须有方法重写

语法:父类类型  对象名 =  new 子类类型();

多态中访问成员变量的特点:编译和运行时都看左边   不加载子类独有的变量 ,引用子父类共有的变量时取父类变量的值。

多态中访问成员方法的特点:编译看左边,运行时都看右边(这一特点导致多态只可调用子类重写了父类的方法。不可调用子类特有的方法。)

向上转型    向下转型(调用子类特有功能时,将父类转为子类,转换失败时ClassCastException,解决boolean  b  = 对象  instanceof  数据类型;   父对象 instanceof 子类  结果 true)

多态的好处:隐藏了子类类型,提高了代码的扩展性(更多是在方法中体现)。(IOC容器中注入接口类型的实现类对象就是多态的扩展性。可以解耦)(当参数是接口或抽象类时,可以传递一个接口的实现类或子类,如果实现类或子类改变,这个参数不用动,如下图)

多态的弊端:只能使用父类共性的内容,而无法使用子类特有功能,功能有限制。

内部类:一个类的内部的类

内部类可以直接访问外部类的成员,包括私有(同名的变量,内部类会覆盖外部类)。

外部类要访问内部类的成员,必须创建对象。

私有成员内部类:将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。

匿名内部类:没有名字,只使用一次。必须继承一个父类或者接口。

public class Demo2 {
   public static void main(String[] args) {
       new A(){
           @Override
           public void functionInterface() {
               System.out.println();
           }
       }.functionInterface();    //也可以赋值给A类型的变量,这样就是多态。但这样就不    //能叫做匿名内部类了
   }
}
interface A{
   void functionInterface();
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值