接口

什么是接口

语法:使用interface来定义

接口当中的成员变量默认是public static final的,接口中的每一个方法默认是抽象方法,

接口不能存在普通的方法,要想存在普通的只有被static和default修饰的方法,

接口不能通过new关键字进行实例话,类和接口是可以通过implements来实现关系的,接口也是可以向上转型和动态绑定的

接口是不能有构造放法和代码块

当一个类实现接口当中的方法之后,当前类当中的方法不能不加pulblic

一个接口也会产生独立的字节码文件

类没有实现接口中的所有的抽象方法,则类必须设置为抽象类

类实现一个接口,要重写接口的所有的方法

接口就是为了实现无法多继承

 

 

 实现多接口

需要先有继承之后,在实现接口,后面的接口需要用逗号隔开

 当一个类继承了另一个类,同时有实现了多个接口,如果想要实现某一个功能,只需要把接口作为参数类型定义一个方法,然后所有实现的这个接口都可以调用这个方法,而不在需要调用父类来进行,从而达到代码的灵活性

 接口的继承

当一个接口想要继承另一个接口或者多个接口时可以使用extends来实现,但是最后实现的时候,要重写所有的方法

 

Object类是所有类的父类,当你的类没有继承或者被继承,都是默认继承Object类,所有类的对象都可以使用Object的引用来接收

(toString)获取对象信息:

 

 当我们的这里没有重写toString时自动调用系统自带的

是输出对象的虚拟的全路径的地址,

 

 

当我们重写了一个toString,就相当于父类引用了一个子类对象,就发生的向上转型(原码)

输出的就是获取到的信息

 

 

对象比较equals

当我们想要比较对象的内容是否相同时可以使用equals,但是如果不重写equals使用系统自带的,系统会默认比较的是他们的一个虚拟地址

 而我们手动重写equals,就可以实现比较对象里面的内容是否相同

 

 

引用类型比较方法

自定义类型使用compareable这个接口来进入,重写compareto方法实现比较多逻辑,

 使用compareable这个接口进行比较,对类的侵入性比较强,

 

当我们想要比较比如说名字大小时,可以使用comparator,且对类的侵入性不强,代码会相对比较灵活,comparator是可以和compareable共存的

 

 

Clonable接口和深浅拷贝

object是所有子类的父类,里面包含着clone的方法,为什么不能实现克隆

1.因为访问权限的问题,protected是访问不同包子类访问是要使用super来调用,所以只能重写clone方法

2.clone方法的异常是受查异常/编译时异常,需要把throws以及后面的放在main函数后面

3.clone方法的返回值是object而我们克隆是向下转型,需要强制类型转换

4.自定义类型想要实现克隆需要实现cloneable这个接口

 

 

 

 cloneable接口是证明当前类是可以被克隆的

浅拷贝就是只拷贝了对象,并没有拷贝对象里面的对象

深拷贝:

重写拷贝方法,就是创建实例话一个临时变量的拷贝,在用这个临时变量去调用拷贝的方法,最后在返回,就可以达到拷贝对象里面的对象,同时也可以更改深拷贝对象里面的内容

写在需要拷贝的方法里面

 

posted @ 2024-10-20 20:41  油头男孩  阅读(4)  评论(0编辑  收藏  举报