发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏
武汉北大青鸟java培训06-学习java笔记
一、接口(interface)
1、 定义:接口不是类,而是一组对类需求的描述,这些类要遵从接口描述的统一格式进行定义。定义一个接口用关键字interface。
例:public interface a{……}
2、 接口是一种特殊的抽象类。在一个接口中,所有的方法为公开、抽象的方法,所有的属性都是公开、静态、常量。所以接口中的所有属性可省略修饰符:public static final,接口中所有的方法可省略修饰符:public abstract。
3、 一个类实现一个接口必须实现接口中所有的方法,否则其为一抽象类。并且在实现类中的方法要加上public(不能省略)。实现接口用关键字implements.
所谓实现一个接口就是实现接口中所有的方法。
例:class Aimple implements A{……..};
4、 一个类除了继承另一个类外(且只能继承一个类),还可以实现多个接口(接口之间用逗号分割)。这样可以实现变相的多继承。
例:class Aimple extends Arrylist implements A,B,C{…}
5、 不能用“new 接口名”来实例化一个接口,但可以声明一个接口。
6、 接口与接口之间可以多继承。
例:interface face1 extends face2,face3{}
7、 接口的作用
(1)、间接实现多继承。
用接口来实现多继承并不会增加类关系的复杂度。因为接口终归不是类,与类不在一个层次上,是在类的基础上进行再次抽象。
父类:主类型 接口:副类型
典例:相声届师父(主)和干爹(副)
(2)、允许我们为一个类定义出混合类型。
(3)、通过接口制定标准
接 口:标准的定义 定义标准
接口的调用者:标准的使用 使用标准
接口的实现类:标准的实现 实现标准
先有接口的定义,再有接口的使用者,后把接口的实现者传到接口的使用者中,接口的使用者会通过接口来调用接口实现者的方法。这就是接口回调。
例:sun公司提供一套访问数据库的接口(标准),java程序员访问数据库时针对数据库接口编程。接口由各个数据库厂商负责实现。
(4)、解耦合作用:采用接口可以更大限度的做到弱耦合,将标准的实现者与标准的制定者隔离(例:我们通过JDBC接口来屏蔽底层数据库的差异)
8、 接口的编程设计原则
(1)、尽量针对接口编程(能用接口就尽量用接口)
(2)、接口隔离原则(用若干个小接口取代一个大接口)
这样可以只暴露想暴露的方法,实现一个更高层次的封装。
9、 注意点:
(1)、一个文件只能有一个public接口,且与文件名相同。
(2)、在一个文件中不能同时定义一个public接口和一个public类。
(3)、接口与类之间只有实现关系,没有继承关系;
类(抽象类)与类之间只有继承关系没有实现关系。接口与接口之间只有继承关系,且允许多继承。
(4)、接口中可以不写public,但在子类实现接口的过程中public不可省略。
二、接口 VS 抽象类
1、接口中不能有具体的实现,但抽象类可以。
2、一个类要实现一个接口必须实现其里面所有的方法,而抽象类不必。
3、通过接口可以实现多继承,而抽象类做不到。
4、接口不能有构造方法,而抽象类可以。
5、实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系。
三、Object类
1、 object类是类层次结构的根类,他是所有类默认的父类。
2、 object类中的三个方法。
(1)、finalize()
当一个对象被垃圾收集的时候,后会由JVM调用这个对象的finalize方法;
注意:这个方法一般不用,也不能将释放资源的代码放在这个方法里;
(2)、toString()
返回一个对象的字符串表示形式。打印一个对象其实就是打印这个对象toString方法的返回值。
我们可以在自己的类时覆盖toString()方法,从而打印我们需要的数据。Public String toString(){……}
(3)、equals(Object o)
该方法用来判断对象的值是否相等。但前提是类中覆盖了equals方法。Object类中的equals方法判断的其实还是地址。这里注意:String类已经覆盖了equals方法了,所以我们能使用equals来判断String对象的值是否相等。
下面是覆盖equals方法的标准流程:
public Boolean equals(Object o){
/**步:现判断两个对象地址是否相等*/
if(this = = o) return true;
/**第二步:如果参数是null的话直接返回false;*/
if(o = = null) return false;
/**第三步:如果两个对象不是同一个类型直接返回false*/
if( !(o instanceof Student) ) return false;
/**第四步:将待比较对象强转成指定类型,然后自定义比较规则*/
Student s = (Student)o;
If(s.name.equals(this.name)&&s.age==this.age)
return true;
else return false
}
(4)、equals的特性:自反性、对称性、一致性、传递性。
Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.