接口,多态,匿名内部类,instance of关键字

1.接口

  • 接口定义常量(jdk7及以前)默认省略public static final。public static final int NUM1=2与int NUM1等价。供接口名直接访问。
  • 抽象方法(jdk7及以前)使用public abstract关键字修饰,这两个关键字都可以省略。public abstract void method();等价于void method();供实现类重写。
  • 默认方法(jdk8) 使用public defalut关键字修饰,Public可以省略,default不可以省略。public default void method(){方法体},供实现类重写或则实现类对象直接调用。
  • 静态方法(jdk8) 使用public static关键字修饰,static不可以省略。public static void method(){方法体},只能供接口直接调用。
  • 私有方法(jdk9及其以上)使用private关键字修饰,private不可以省略。private void method(){方法体},只能在本接口中访问。
    如果实现接口必须抽象方法,否则自己是个抽象类(JDK1.8测)。

2.多实现的几种冲突情况

  • 公有静态常量的冲突:如果多个接口中有相同的常量名,实现类无法继承,报错。
  • 公有抽象方法的冲突:实现类只需要重写一个。
  • 公有默认方法的冲突:实现类只需要重写一个。
  • 静态方法不存在冲突,是直接调用的。
  • 私有方法不存在冲突,因为是自己的。

3.接口与接口之间的关系

  • 继承关系
  • 单继承
  • 多继承
  • 格式:public interface 接口名 extends 接口名1,接口名2.

  • 接口多继承中的冲突关系:
  • 公有常量无法继承
  • 公有抽象方法的冲突:子接口只会继承一个其中有冲突的抽象方法。
  • 公有默认方法的冲突:子接口必须重写一次有冲突的默认方法(注意要加上default)。面试题:1.实现类重写接口中的默认方法,不需要加default.2.子接口重写父接口中的默认方法,必须加default.
  • 静态方法和私有方法不冲突。只能在本接口中访问。子接口不行。

4.同时继承和实现需要注意的问题

  • 公有默认方法的冲突:优先访问父类的,父类没有就是访问父接口中的。公有常量和公有抽象方法和上述类似。
  • 公有静态方法的冲突:只会访问父类的静态方法,因为接口中的静态方法只能被接口使用。
  • 私有方法的冲突:不存在冲突。
  • 5.多态

  • 多态概念:同一种行为,不同的事物具有不同的表现形态。
  • 实现多态:
  • 1.继承或者实现
  • 2.父类引用指向子类对象||接口引用指向实现类对象
  • 3.方法重写

  • 多态访问成员变量的特点:编译看父类,运行看父类(编译看左边,运行看左边)
  • 多态访问成员方法的特点:
    1.非静态方法:编译看父类,运行看子类(编译看左边,运行看右边)。
    2.静态方法:编译看父类,运行看父类(编译看左边,运行看左边)
    多态的应用场景
    1.变量多态:不常用。
    2.形参多态:常用。如何参数类型为父类类型,该参数就可以接收该父类类型的对象或则其所有子类对象。
    3.返回值多态:常用。如果返回值类型为父类类型,那么就可以返回该父类类型的对象或则其所有子类对象。
    在这里插入图片描述
    **多态的好处与弊端:**好处:提高了代码的重复性,弊端:无法访问子类特有的方法或者成员变量,因为多态访问的特点是:编译看父类,所以引入了引用类型转换。

5.引用类型转换

向上转型: 子类类型向父类类型转换的过程,这个过程是默认的。Animal animal=new Dog();
**向下转型:**父类类型向子类类型转换的过程。Dog dog=(Dog) animal;
向上转型或则向下转型要满足继承或则实现关系。
instanceof关键字: if(变量名 instanceof 数据类型){ }
内部类
1.什么是内部类?将一个类A定义在另一个类B里面,类A就是内部类。
格式:public class 外部类{
public class 内部类{
}
}
成员内部类的特点:
1.在其他类中,访问内部类的成员,得先创建内部类对象:
外部类名.内部类名 对象名=new 外部类名().new 内部类名();
2.在外部类中,访问内部类的成员,得先创建内部类对象: 外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
在内部类中,可以访问外部类的一切成员(包含私有的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值