JAVA学习——抽象类和接口

一、abstract class

1.包含抽象方法的类一定是抽象类,但抽象类不一定包含抽象方法。

2. ①抽象类一定要使用abstract修饰符;

格式:public abstract class 类名{}

②抽象类的构造函数必须是protected;

③抽象方法没有方法体,就是不用写“{}”。  抽象方法是非静态的。

 

3.抽象类不能使用new实例化,但是可以创建数组。

SimpleGeometricObject []obj=new SimpleGeometricObject[3];

二、interface

格式:修饰符 interface 接口名{

//常量声明

//抽象方法签名//注意:只有签名,没有方法体

}

1.接口只能包含常量和抽象方法(方法没有实现)。特殊地,Cloneable接口没有方法体,就是Cloneable接口没有常量也没有抽象方法。

(1)∵接口中的数据一定是public static final,方法一定是public abstract,∴可以简写

f266d8c4af4c451ebe2b271337633a5a.png

——————————2.class v.s. interface————————

所有的类都有一个共同的根Object类,但是接口没有共同的一个根。一个接口可以继承多个接口,一个类可以实现多个接口,但是一个类只能继承一个类。

a398304794ca441b8fffd4660f74f305.png

3.类实现接口的话,要声明

修饰符 class 类名 extends 父类名 implements 接口名{

//在类中重写接口

}

4.Comparable接口定义了compareTo方法,用于比较对象。

   09fc60c80d444375b5433c70dabb87f7.png

如果数组中的对象是Comparable接口的实例,那么可以调用Arrays.sort(Object[])对数组进行排序。

5.Cloneable接口(空的)

方法clone实现对象浅拷贝。一个对象能被克隆的两个条件:

①实现Cloneable接口,使拷贝合法,避免出现CloneNotSupportedException②重写clone方法。

~native表示这个方法不是java写的,但它是在JVM中针对本地平台实现的。

6.(1)shallow copy:拷贝对象时仅拷贝对象本身,包括对象中的基本变量,但不拷贝对象包含的引用指向的对象;就是说如果一个数据域本身是基本类型,那么复制的就是他的值;如果一个数据域是对象,那么复制的就是对象的引用,而不是它的内容,即浅复制前后的这两个数据域指向同一个对象。

(2)deep clone:不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。在深复制中,如果一个数据域是对象的引用,那么复制的就是它的内容,即深复制前后的这两个数据域指向不同的对象。

501da76152d14c06a09a51ec0a06d865.png

要实现深复制的话,就要重写clone方法:

bbef68be1ea14f4f8246090366ea1fd0.png

整理不易,亲亲点个赞呗~~

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值