面向对象(三)

 

一、抽象类

1、抽象类和抽象方法

        抽象方法只有方法签名,没有方法的具体实现。

        抽象方法和抽象类使用abstract关键字进行定义。

        抽象类和抽象方法的规则如下:

A、抽象方法和抽象类使用abstract关键字修饰,抽象方法中不能有方法体。

B、抽象类不能被new实例化。(即使抽象类里不包含抽象方法,也不能创建实例。)

C、抽象类可以包含属性、方法(普通方法和抽象方法均可)、构造函数、初始化块、内部类、枚举类。抽象类的构造函数不能创建实例,主要是用于被其子类调用。

D、含有抽象方法的类必须被定义为抽象类。

注意:(1)、抽象类一定是一个父类。

  (2)abstract不能用于修饰属性和局部变量。(即没有抽象变量和抽象属性的说法)

  (3)abstract不能用于修饰构造函数。

  (4)abstract关键字不能与privatestaticfinal进行组合。

  (5)、子类需要覆写抽象类的所有抽象方法后才能创建对象,否则子类也是一个抽象类。

2、抽象类的作用

         抽象类体现的是一种模板模式的设计,抽象类可以作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会大体保留抽象类的行为方式。

 

二、接口

1、接口的定义

接口(interface)是一种特殊的抽象类。

定义接口的基本语法:

[修饰符] interface 接口名  [extends  父接口1,父接口2...]

{

零到多个常量定义

零到多个抽象方法定义...

}

接口的特点:

(1)接口是对外暴露的规则,即所有成员的访问权限都是public的。

(2)接口是程序的功能扩展。

(3)接口可以用来多实现。

(4)类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

(5)接口与接口之间可以有继承关系。

注意:(1)、接口里不能包含普通方法,接口里所有方法都是抽象方法。

  (2)、接口里不能包含构造函数和初始化语句块。

  (3)、接口中的成员都是public访问权限。定义接口时,可以省略public修饰符。接口中的常量属性默认为public static final修饰;接口中的方法总是使用public abstract修饰;接口中的内部类和枚举类总是采用public static修饰。

  (4)、接口支持多继承。(注意其与一般类的区别。)

 

2、接口的实现

接口的主要作用就是被实现类实现。

一个类可以实现多个接口,实现时使用implements关键字。

实现的语法:

[修饰符] class 类名  implements  接口1,接口2...

{

类体

}

一个类实现多个(含一个)接口后,需要完全实现这些接口中所定义的方法;

注意:(1)、实现接口的方法时,必须使用public访问权限修饰符。

注意接口和抽象类的区别:

(1)、接口中只能包含抽象方法;

(2)、接口中不能定义静态方法;

(3)、接口里只能定义静态常量属性,不能定义普通属性;

(4)、接口不能包含构造器;

(5)、接口中不能包含初始化块;

三、多态

1、多态性          

         Java应用变量有两个类型:一个是编译时类型,一个是运行时类型。如果编译时类型和运行时类型不一致,这种现象就称为多态。也可以简单理解为某类事物存在多种形态。

         编译时的类型是由声明该变量时所使用的类型决定,运行时类型是由实际赋给该变量的对象决定。

         多态的特点:

(1)、成员函数:编译时要查看引用变量所属的类中是否有所调用的成员;在运行时要查看对象所属类中是否有所调用的成员。

(2)、成员变量:只看引用变量所属的类。也可以说对象的属性不具备多态性。

2instanceof运算符

         instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作数通常是一个类或接口。它用于判断前面的对象是否是后面的类、或者其子类、实现类的实例。如果是,则返回ture,否则返回fasle

         instanceof运算符的作用:在执行强制类型转换之前,首先判断前一个对象是否是后一个类的实例,是否可以成功转换,从而保证代码的健壮性。

         注意:instanceof运算符前面操作数的编译时类型要么与后面的类相同,要么是后面类的父类,否则会引起编译错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值