java学习笔记03

本文详细介绍了Java中的抽象类和接口,包括它们的定义、使用方式和区别。抽象类用于表示继承关系,不能实例化,而接口强调多态性和行为规范。一个类可以继承一个抽象类并实现多个接口。同时,文章提到了Comparable接口用于对象比较,以及Cloneable接口用于对象克隆的原理和实现。
摘要由CSDN通过智能技术生成

此文章是写在二轮java复习,用来总结在刚开始学java时没注意的知识点。

1)抽象类

用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。

抽象方法:只有方法的声明,没有方法的实现。以分号结束

     abstract int   Method1( int a );

含有抽象方法的类必须被声明为抽象类。

抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。

不能用abstract修饰私有方法,构造方法,静态方法

2)接口interface

接口中的所有成员变量都默认是由public static final修饰的。

接口中的所有方法都默认是由public abstract修饰的。接口没有构造方法

实现接口的类中必须提供接口中所有方法的具体实现内容。

多个无关的类可以实现同一个接口

一个类可以实现多个无关的接口

 与继承关系类似,接口与实现类之间存在多态性

接口也可以继承另一个接口,使用extends关键字。

3)抽象类与接口的区别和相同

1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是“is-a”关系,interface表示的是“has-a”关系。

    4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值,抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
6.接口中的方法默认都是 public,abstract 类型的。
  结论:
abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概 念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系(虽然都能够实现需求的功能)。这其实也是语言的一种的惯用法,希望同学们能够细细体会。

  1. 系统的接口

Comparable:用于对象比较,在对象类中 重写int compareTo(Object o)方法 ,以实现基于某个对象属性(如以年龄比较,以id比较)的比较

使用时:

Cloneable接口:

用于创建对象副本,这种方法不同于对象赋值,赋值只是将p1指针内容交给p2,clone()是再给一个新的对象内容给p2,即改变clone后的p2中的内容,p1不受影响。

Clone()方法的实现:

1:浅克隆(只克隆本类中的基本属性,不克隆本类中的类成员属性)

2:深克隆(还会将本类中的属性再次克隆)

克隆的使用:

浅克隆的结果(子类对象地址不变):

深克隆的结果(子类对象地址改变):

-----------------------------------------------------------------

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值