十三 java_java基础知识十三

第十三章

抽象类

Java可定义不含方法体的方法,其方法体由子类根据具体情况实现,这样的方法称为抽象方法(abstract method),包含抽象方法的类必须是抽象类(abstract class)。

抽象方法:使用abstract定义的方法或者来自接口定义的方法。

只有实例方法可以声明为抽象方法。

一个类C如果满足下面的任一条件,则该类包含抽象方法且是抽象类:

类C显式地进行一个抽象方法的声明;

类C的父类中声明的抽象方法未在类C和它的父类中实现;

类C的接口中声明一个方法,并且类C未实现该方法。

只要类C有一个未实现的方法,类C就是抽象类

抽象类不能被实例化,即不能用new关键字创建对象。

抽象类可以定义构造函数,并可以被子类调用。

抽象类可以用于定义变量、函数参数和函数返回值,但他们只能用具体子类的对象实例化。

抽象类的父类可以是具体类:因为抽象类自己引入了抽象方法。例如,具体类Object是所有类的祖先父类。

接口

接口是公共静态常量、方法和公共抽象、默认实例方法的集合。接口是能力、规范、协议的反映。接口中的一切都默认是public的,没有修饰符的方法默认是abstract的,数据成员默认是static的

接口不是类(final类Math有私有构造函数和具体方法):

(1)接口不能定义构造函数;

(2)一个接口可继承extends多个接口;

(3)接口不能被类继承extends;

(4)一个类可实现implements多个接口。

00267c4534639fab8e9651e4fdbe0b9a.png

不同的接口可以定义同名的静态方法,这些接口的同名静态方法可以继承到某个新接口中,并且新接口也可以定义同名的静态方法。访问静态方法使用“接口名.”,因而它们之间是可区分的

Comparable接口

public class ComparableRectangle extends Rectangle implementsComparable {/**Construct a ComparableRectangle with specified properties*/

public ComparableRectangle(double width, doubleheight) {super(width, height);

}/**Implement the compareTo method defined in Comparable*/

public intcompareTo(Object o) {if (getArea( ) >((ComparableRectangle)o).getArea()) return 1;else if (getArea( )

}

}

对于ComparableRectangle的两个对象r1和r2,直接调用Max.max(r1,r2)找出最大的对象

对于实现了Comparable接口任何类的二个对象(不管其具体实现是什么)a1和a2,都可以调用Max.max(a1,a2)找出最大的对象

Cloneable接口

Clone用于防止一个变量引用的块被其它引用变量引用。

Java定义了Cloneable接口,任何想克隆的类必须实现该接口,同时覆盖从Object类继承的clone方法,并将访问属性改为public

Cloneable接口为空接口(未定义任何函数),其定义为

package java.lang;

public interface Cloneable {     }

空接口称为标记接口(markup interface)

空接口有什么作用?允许你用instanceof检查对象能否被clone:

if(obj instanceof Cloneable)…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值