【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof

时间:2021-12-17 10:26:21

课程回顾:

 

访问修饰符

private--->default--->protected---->public

 

重写:子类中

1、访问修饰符不能比父类的更严格

2、静态/非静态、返回值类型、方法名、形式参数类型必须相同

 

递归:方法内部出现了自己调用自己

 

abstract:关键字 抽象的

1、修饰类:抽象类

2、修饰方法:抽象方法

 

final:关键字 最终的

1、类

不能被继承

2、变量

常量

3、方法

不能被重写

 

今日内容:

 

java原则之最佳匹配性原则

在调用重载方法时,会优先选择最适合的方法

 

abstract:关键字 抽象

1、抽象类:修饰类

如果遇到某类不能实例化,我们可以将其写成抽象类

如果某类包含了抽象方法,我们必须将该类写成抽象类

2、抽象方法:修饰方法

格式:[修饰符] abstract返回值类型 方法名([形式参数列表]);

抽象方法只有方法的声明,没有方法的实现

 

 

abstract不能修饰静态方法

抽象方法也不能是private

 

练习:请写一个类Person,属性若干,有抽象方法studyeat

并且写若干子类

创建测试类,创建若干张子类对象调用方法

 

接口:是由常量和抽象方法组成的结构体

 

接口中的属性:默认拥有 public\static\final

接口中的方法:默认拥有public\abstract

interface:关键字 声明接口

接口的创建格式:

[修饰符] interface接口名{

常量

抽象方法

}

接口不能实例化

 

java允许多实现,允许一个类实现多个接口

implements:关键字 实现

主要是应用在类中进行实现接口(也就拥有了接口中的方法)

 

接口可以继承(extends)多个接口,多个接口之间使用,隔开

类可以实现(implements)多个接口,多个接口之间使用,隔开

 

抽象类和接口的区别?

抽象类:

不能实例化

只能单继承

可以有普通方法、静态方法、构造方法、属性、静态属性

可以有抽象方法

 

接口:

不能实例化

可以多实现

还可以多继承(接口)

只能有常量和抽象方法

 

在开发中,我们优先选择接口

 

 

抽象类和接口能否作为数据类型使用?

 

 

 

多态:多种形态

多态的分类:

1、静态化(编译时)多态

重载

2、动态化(运行时)多态

重写

对象转型

1、向上转型:子类对象可以充当父类对象,自动转换的过程

父类 对象名=new 子类([实际参数列表]);

2、向下转型:父类对象可以充当子类对象(父类对象本来就是由子类对象充当的),强制转换的过程

子类 对象名=(子类)父类对象名;

再向下转型之前,一般都使用instancof进行验证,能否转型成功

 

instanceof:关键字 验证左边的对象是否为右边的类型

格式:对象名 instanceof 类名;

返回值类型为boolean

常常用来向下转型前的验证

 

想向下转型那么一定的先向上转型

 

 

 

接口回调:声明一个接口类型的变量,通过实现类对象完成变量的实例化,

最后使用接口变量调用接口中的方法,这一过程我们称为接口回调

 

Object类中的equals方法:

public boolean equals(Object obj)

 

==equals的区别?

大多数都是没有区别的,都是比较的栈内存的数据

只有String等类才是有区别

因为String类对equals方法进行重写,比较的是字符串的内容是否相同

包装类的equals也都重写了,比较的是内容