`
heimeiyingwang
  • 浏览: 94962 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

corejava辅导(6)

阅读更多

java中的接口

 

接口是一种程序结构,是特殊的抽象类。接口中的方法都是公开的抽象方法(public abstract),接口中的属性都是公开静态常量(public static final)。

 

声明一个接口用 interface 关键字,接口是一种类型,编译之后生成相应字节码,他的声明规范也要符合类型的定义(一个源文件中只能有一个public interface,接口名和源文件名相同,有public interface,就不能写public class)。接口中的属性可以不加修饰符,方法也不用加修饰符。

 

接口可以继承,只能由接口继承,用类去实现(继承)时要换用 implements 关键字,类和接口的关系不叫做继承关系,叫做实现关系,其实质也是继承。

 

一个类只能继承另外一个类,可以实现多个接口,其语法是在implements后面写接口名,多个接口以“,”分隔。

 

接口可以多继承,其语法和类的继承语法相同,接口多继承时,在extends后写接口名,继承多个接口,接口名以分隔,接口的继承关系是把其父接口中的抽象方法继承到子接口中。实现接口就必须实现接口中的所有方法,否则实现类必须是抽象类。

 

一个类在继承一个类的同时也可以实现一个或多个接口。采用接口就绕开了单继承限制。

 

接口类型可以做为编译时类型,其实际的运行时类型必须是完全实现接口的类的对象实例,这样就使多态变得很灵活了,

 

例:

public interface A{

     int test();

}

interface B extends A{

     void count();

}

 

class D{}

 

class C extends D  implements A,B{

//C类既实现了AB两个接口,也继承D

     public int test(){

         ……

     }

     public void count(){

         ……

     }

}

 

注意:

实现接口时,实现(覆盖)抽象方法,注意必须在方法的返回值类型前加public修饰符,否则就无法覆盖。

没有完全实现接口中的方法,那么这个类就只能是抽象类,不能创建对象。

接口的是实质就是特殊的抽象类。接口没有构造方法。

 

接口的意义

 

1) 接口和匿名内部类可以实现多继承。

 

2) 接口可以实现混合类型(主类型,副类型),java中通过接口可以分出主次类型。主类型使用继承,副类型,使用接口实现。

 

3) 接口进一步深化了标准的思想,接口本身就是一个标准,起到了降低耦合性的作用。

接口使方法的定义和实现相分离,将接口的定义者和实现者相分离。

接口可以用于降低模块间或系统间的耦合性。

针对接口编程可以屏蔽不同实现间的差异,看到的只是实现好的功能,

 

接口:定义标准,

接口的实现:实现标准

接口的调用者:标准的使用

针对接口编程原则,也就是按照标准实现。

 

先有接口的定义,再有接口使用者,最后把接口的实现类对象作参数传入接口的使用者中相应的方法中,接口的使用者会通过接口来调用接口实现者的方法。

 

接口的回调

 

接口的定义者定义好标准,接口的使用者事先写好使用代码。接口的实现者写好实现后把实现类对象传入接口的使用者中,调用接口中方法也就是调用接口实现类中的方法。这种过程叫做接口的回调

 

尽量使用接口类型作为编译时类型,尽量将抽取到的共性行为写在接口中

 

接口隔离原则,用若干个小接口取代一个大接口。

 

把一个类的功能作成接口,暴露想暴露的方法,接口隔离原则可以实现更高层次的封装,针对的对象不同,暴露的方法也不同。

 

java中的根类Object

 

java中所有的类的父类,或直接或间接的或隐含的都是Object类。

java不允许循环继承,互相继承是不可以的。

 

Object类中的finalize()方法是在一个对象被垃圾收集的时候调用的,会由JVM调用这个对象的finalize()方法

 

Object类的String toString()方法,返回该对象的字符串表示。未覆盖时,toString()方法返回的是类名加上对象实例地址的一个字符串。在子类中推荐覆盖toString()方法。

 

Object类中的boolean equals(Object o)方法是用来比较对象的内容是否相等,其返回值是boolean类型的值,相同为真,不同则为假。未覆盖的equals方法 实际上比较的还是对象地址。String类覆盖了equals()方法,比较的是对象中的内容是否相同。子类中也推荐覆盖Object类中继承的equals()方法。

 

equals()的覆盖原则,

自反性 x.equals(x) true

对称性 y.equals(x) x.equals(y) 的值要相同,要么都为true,要么都为false

传递性 x.equals(y)true y.equals(z)也为true ,那么x.equals(z)一定也为true

 

覆盖equals()方法的步骤

 

boolean equals(Object o){

 if(this==o) return true;//1,判断是不是同一个对象

 if(o==null) return true;//2,判断本对象是不是空

 if(!(o instanceof 本类类名)) return false//判断是不是本类对象

......//根据本类设计。

}

 

例:

public class Student{

     private int id;

     private String name;

     private String address;

     public String getAddress() {

         return address;

     }

     public void setAddress(String address) {

分享到:
评论

相关推荐

    CoreJava全套详细笔记资料.pdf

    CoreJava全套详细笔记资料.pdf CoreJava是Java编程语言的核心部分,涵盖了Java语言的基础知识和高级应用。以下是对给定文件的详细解读和知识点总结: 一、原码、反码、补码 * 原码是指一个数的二进制表示形式,...

    Core Java

    6. **Java开发流程**:包括编写源代码、使用javac编译、使用java执行。开发环境需要正确配置环境变量,如JAVA_HOME, CLASSPATH, PATH。 7. **JVM**:Java虚拟机是Java程序的执行引擎,它解析字节码并在不同的平台上...

    Core Java for the Impatient azw3

    Core Java for the Impatient 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java 核心技术 第八版-第1和2卷+源代码【Core Java 8th Edition】

    Java 核心技术 第八版-第1和2卷+源代码【Core Java 8th Edition】内附资源: Core Java. Volume I. Fundamentals, 8th Edition.pdf ; Core Java. Volume II. Advanced Features, 8th Edition.chm ; Core Java 8th ...

    达内 CoreJava老师笔记汇总

    CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 10 CoreJava DAY03 数组 20 CoreJava DAY04 27 CoreJava DAY05 面向对象 31 CoreJava DAY06 类的加载过程、实例化、继承、多态 37 CoreJava DAY07修饰...

    core java 复习总结

    core java 复习,简单的对core java 复习

    达内Java培训-CoreJava全程笔记(WORD唐亮版)

    CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰符 26 CoreJava DAY08 常用类...

    Core Java 学习必备PPT(CoreJava教案)

    Core Java 学习必备PPT(CoreJava教案)

    corejava核心技术

    corejava核心技术中文版包1 corejava核心技术中文版

    core java1&2

    《Core Java 1&2》是Java编程领域中两本非常经典的教材,分别对应于卷1和卷2,英文版提供了全面且深入的Java学习资源。这两本书由Cay S. Horstmann和Gary Cornell撰写,是许多程序员入门和进阶Java技术的重要参考书...

    CoreJava面试题

    CoreJava基础及语法部分笔试题

    Core Java( Java 核心) PDF 教材

    6. **多线程编程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口、synchronized关键字、volatile属性以及线程池。这部分内容对于开发高性能、高并发的应用至关重要。 7. **输入/输出流**:Java的I/O流...

    java--corejava学习黄金代码

    要想学习java corejava是java之旅的最重要的入门知识,本人在学习corejava中练习过的最重量级的代码! 希望对新手有所帮助!

    corejava核心技术分卷压缩2

    corejava核心技术分卷压缩2corejava核心技术分卷压缩2

    corejava(source)

    《深入解析CoreJava源码》 CoreJava是Java编程领域中的经典教材,其源码对于初学者和有经验的开发者来说都是宝贵的资源。通过研究CoreJava的源码,我们可以更深入地理解Java语言的底层机制,提升编程技能,并且能够...

    Core Java Professional For First Time Learner's(2nd) mobi

    Core Java Professional For First Time Learner's(2nd) 英文mobi 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    core java 示例代码

    新手们可通过示例代码学习core java

    Core Java Volume II Advanced Features__10th edition

    Core Java® has long been recognized as the leading, no-nonsense tutorial and reference for experienced programmers who want to write robust Java code for real-world applications. Now, Core Java®, ...

    Core Java面试重点知识总结

    【Core Java面试重点知识总结】 在Java开发领域,掌握Core Java的基本概念和技术是至关重要的,尤其是在面试环节。本文将深入探讨Core Java中的JVM架构及其关键组成部分,包括类装载器、执行引擎、运行时数据区域...

Global site tag (gtag.js) - Google Analytics