抽象类与接口,instanceof关键字

abstract修饰的类是抽象类
abstract修饰的方法时抽象方法,抽象方法只有声明部分,没有方法体。
抽象类不能被直接实例化,不能直接使用new关键字来创建对象
抽象类中可以没有abstract方法,但是拥有abstract方法的类一定是抽象类
抽象类的子类必须实现抽象类所有的方法,否则这个子类也是抽象类
抽象类中的抽象方法是多态的一种表现
抽象类和普通类的区别:1.抽象类由abstract修饰,而普通类没有  2.抽象类不能创建对象,而普通类可以
3.抽象类中一定有抽象方法,而普通类中没有抽象方法


接口内只能包含常量(public static final)、抽象方法及内部类
接口中的抽象方法只能由public作为访问权限控制符,不能为其他控制符所使用
接口的继承:通过extends关键字可以使自定义的接口实现继承,但需要注意一下两点:
    1.接口只能继承接口(父接口),不能继承抽象类和普通类

    2.接口弥补了java单一继承的缺点(类只能继承一个类),即接口可以继承多个父接口,中间用英文逗号隔开


接口的实现:通过implement关键字实现接口,java的继承是单继承,通过接口的实现可以弥补java类单继承的不足


注意在类中实现接口时,类中的方法的名字、返回值类型、参数的个数以及参数数值类型必须与接口中对应的抽象方法一致

如果一个类实现了一个接口,但是没有实现接口中所有的抽象方法,则该类也为抽象类

如果多个接口中定义了相同的抽象方法,则在实现类中实现其中一个方法即可

接口回调:接口回调描述的是一种现象:接口声明的变量指向其实现类实例化的对象,那么该接口变量就可以调用接口中的抽象方法。


注意:接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象

接口:接口实现类可以直接使用接口中的常量


接口实现类所实现的多个接口中有常量名相同的常量,则在实现类中不能直接使用,必须使用类名来确定到底调用哪个接口中的常量:


默认方法:Java8以前版本中规定,接口中所定义的方法只能是抽象方法,从Java8开始,接口中可以添加一个或多个由default关键字修饰的非抽象方法,该方法又称为扩展方法,该默认方法将由接口实现类创建的对象来调用,如下例:


同样,从Java8开始,接口中可以添加一个或多个由static关键字修饰的非抽象方法,该方法将由接口或其实现类直接调用:


函数式接口:

如果接口内只定义一个抽象方法,则该接口称为函数式接口:


抽象类和接口的区别:


instanceof关键字:

instanceof运算符用于判断该运算符前面引用类型变量指向的对象是否是后面类,或者其子类、接口实现类创建的对象。如果是则返回true,否则返回false,其使用格式如下:

引用类型变量 instanceof (类、抽象类或接口)


instanceof运算符用于强制类型转换之前检查对象的真实类型以避免类型转换异常,从而提高代码健壮性。


猜你喜欢

转载自blog.csdn.net/KZ347117718/article/details/80406154
今日推荐