`
tzq668766
  • 浏览: 81180 次
  • 性别: 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类既实现了A,B两个接口,也继承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 obj){
if(this==obj) return true;//1,判断是不是同一个对象
if(obj==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) {
		this.address = address;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public boolean equals(Object o){
 if(this==o){ //1,判断是不是同一个对象
return true;
}else
 if(o==null){ //2,判断对象是不是空
return true;
}else
if(!(o instanceof Student )) {//判断是不是本类对象
return false;
}else{
Student s=(Student)o;//强制转换成本类对象			 if(this.name.equals(s.getName())&&
this.id==s.getId()&&
this.address.equals(s.getAddress())){
	return true; //判断对象内容是否相同	
				}
	return false;
			}
}

public String toString() {
	return this.getId()+”\n”+this.getName()+”\n”+
        this.getAddress();
	}
	
}

分享到:
评论

相关推荐

    CoreJava学习笔记

    ### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...

    corejava学习笔记

    Java是一种广泛使用的面向对象的编程语言,其基础知识构成了"Core Java"的学习内容。在学习Java时,遵循"多花时间、多动手、多问题"的原则至关重要,因为理论理解与实践操作相结合能更好地掌握知识。 1. **Java语法...

    Core Java 学习笔记

    《Core Java》学习笔记。 我把自己的笔记都以注释的形式写在代码里面了,这样方便理解。 尽管有些部分被标记为“已完成”,但实际上以后说不定我还会折返回来进行修改或者添加一些注释。 当然如果你有什么不理解...

    corejava学习笔记.doc

    Java是一种由Sun Microsystems在1995年推出的高级编程语言,现由Oracle公司维护。...以上就是Core Java学习笔记的主要内容概述,涵盖了从基础语法到高级特性的广泛知识,为深入理解和应用Java打下了坚实的基础。

    core java 学习笔记

    这篇学习笔记主要讨论了Java集合框架,包括Collection、List、Set和Map四大接口以及它们的相关方法。 首先,Collection是所有集合类的顶级接口,它定义了一些基本的操作,如添加元素(add)、获取元素数量(size)、...

    达内core_java学习笔记

    Java是世界上最流行的编程语言之一,...以上就是“达内Core Java学习笔记”中涉及的主要知识点。通过深入学习和实践,初学者可以逐步建立起坚实的Java编程基础,并为进一步学习Java的高级特性和框架打下坚实的基础。

    学习笔记 java\CoreJava笔记\CoreJava_day12

    在Java编程语言中,SortedSet接口是Set接口的一个子接口,它添加了对集合元素排序的能力。SortedSet接口要求其实现类必须维护元素的排序顺序,这种顺序可以是元素的自然顺序(即元素自身可比较),也可以是通过提供...

    学习笔记 java\CoreJava笔记\CoreJava_day06

    在Java编程语言中,继承是面向对象编程的一个关键特性,它允许子类继承父类的属性和方法,从而实现代码的复用和扩展。在Java中,类的继承是单继承的,即一个子类只能有一个直接父类,但可以通过接口实现多继承的效果...

    达内 CoreJava老师笔记汇总

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

    CoreJava学习笔记.doc

    《CoreJava学习笔记》 Java,作为一种广泛使用的高级编程语言,以其独特的特性和优势深受开发者喜爱。本学习笔记旨在深入浅出地介绍Java的核心概念,帮助初学者快速掌握这一强大的工具。 1. Java特点 Java语法...

    CoreJava全套详细笔记资料.pdf

    CoreJava全套详细笔记资料.pdf CoreJava是Java编程语言的核心部分,涵盖了...通过对CoreJava全套详细笔记资料的学习,我们可以更好地理解Java语言的基础知识和高级应用,从而提高自己的编程能力和解决问题的能力。

    学习笔记 java\CoreJava笔记\CoreJava_day11

    CoreJava_day11的学习笔记主要涵盖了集合框架,特别是关于List、Set和Map接口,以及ArrayList、Vector和LinkedList等具体实现类的知识点。 首先,集合框架是用来存放对象的对象,它提供了一组接口和类,使得我们...

    杰普学习corejava总结笔记

    6.执行匿名代码块 7.执行构造器 8.返回内存地址 3. 1:String类型可以直接使用+进行连接运算。 2:String是一种Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。 3:toUpperCase()...

    达内COREJAVA学习笔记.doc

    ### 达内COREJAVA学习笔记知识点详述 #### 一、Java版本与平台概述 - **J2SE**: Java Standard Edition,即Java标准版,针对桌面应用开发。 - **JAVA SE**: 指的是Java SE 5.0,发布于2004年,增加了泛型、枚举等...

    Java学习笔记及心得

    ### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...

    CoreJava卷一学习笔记

    自己学习corejava核心技术卷一时的学习笔记和心得,提出的一些问题

    corejava课程笔记.rar

    这份"corejava课程笔记.rar"压缩包包含了为期17天的学习内容,全面覆盖了CoreJava的核心概念和技术,旨在为初学者提供一条清晰的学习路径。 在Java的世界里,CoreJava是指Java的基础部分,不涉及高级特性如J2EE、...

    java\CoreJava笔记\CoreJAVA_day01

    在学习CoreJava时,我们需要掌握以下几个关键知识点: 1. **编程思想**: - 面向对象编程(Object-Oriented Programming, OOP):Java是一种纯面向对象的语言,一切皆为对象,理解类、对象、封装、继承、多态等...

Global site tag (gtag.js) - Google Analytics