Java小结--类、接口

必须覆盖的方法:派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为抽象类

不能覆盖的方法:基类中声明为final的终结方法;基类中声明为static 的静态方法

终结类与终结方法:

1.被final修饰符修饰的类和方法

2.终结类不能被继承,不能有派生类

3.终结方法不能被当前类的子类重写,不能被派生类覆盖

final class name {   . . .  }

抽象类

1.代表一个抽象概念的类

2.没有具体实例对象的类,不能使用new方法进行实例化

3.类前需加修饰符abstract

4.可包含常规类能够包含的任何东西,例如构造方法,非抽象方法

5.也可包含抽象方法,这种方法只有方法的声明,而没有方法的实现

意义:抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承它的抽象化的特征;抽象类中可以包括被它的所有子类共享的公共行为;抽象类可以包括被它的所有子类共享的公共属性;在程序中不能用抽象类作为模板来创建对象;在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性

abstract class Number {

    .. .

}

抽象方法:publicabstract <returnType> <methodName>(...);

1.仅有方法头,而没有方法体和操作实现

2.具体实现由当前类的不同子类在它们各自的类声明中完成

3.抽象类可以包含抽象方法

注意:

1.一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体,即重写父类中的所有抽象方法

2.只有抽象类才能具有抽象方法,即如果一个类中含有抽象方法,则必须将这个类声明为抽象类

3.除了抽象方法,抽象类中还可以包括非抽象方法

泛型:

泛型类:在类名后面加上“<Type>”

泛型方法:在方法名前加上“<Type>”

“?”代表任意一种类型,它被称为通配符

有限制的泛型是指,在参数“Type”后面使用“extends”关键字并加上类名或接口名,表明参数所代表的类型必须是改类的关键字或者实现了该接口

对于实现了某接口的有限制泛型,也是使用extends关键字,而不是implements关键字


接口 :使抽象的概念更深入了一层,是一个“纯”抽象类,它只提供一种形式,并不提供实现。允许创建者规定方法的基本形式:方法名、参数列表以及返回类型,但不规定方法主体,也可以包含基本数据类型的数据成员,但它们都默认为static和final

 作用:接口允许我们在看起来不相干的对象之间定义共同行为

[接口修饰符] interface 接口名称 [extends 父接口名]

{

…//方法的原型声明或静态常量

}

接口的数据成员一定要赋初值,且此值将不能再更改,允许省略final关键字

接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字

接口的实现

public class 类名称 implements 接口名称 {

       /* Bodies for the interface methods */

       /* Own data and methods. */

}

必须实现接口中的所有方法

来自接口的方法必须声明成public

多重继承:Java的设计以简单实用为导向,不允许一个类有多个父类。但允许一个类可以实现多个接口,通过这种机制可实现多重继承。

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

{

… …

}

接口扩展:接口可通过扩展的技术派生出新的接口。原来的接口称为基接口(base interface)或父接口(super interface)。 派生出的接口称为派生接口(derived interface)或子接口(sub interface)。 派生接口不仅可以保有父接口的成员,同时也可加入新成员以满足实际问题的需要。实现接口的类也必须实现此接口的父接口。

interface 子接口的名称 extends 父接口的名称1,父接口的名称2,…

{

  … …

}

塑型 :类型转换     方式:隐式(自动)的类型转换;显式(强制)的类型转换

  对象包括:基本数据类型:将值从一种形式转换成另一种形式

            引用变量:只能被塑型为任何一个父类类型,对象所属的类实现的一个接口,被塑型为父类或接口后,再被塑型回其本身所在的类。

隐式(自动)的类型转换: 

1.基本数据类型:相容类型之间存储容量低的自动向存储容量高的类型转换

2.引用变量:被塑型成更一般的类;被塑型为对象所属类实现的接口类型

显式(强制)的类型转换

塑型的应用

1.赋值转换:赋值号右边的表达式类型或对象转换为左边的类型

2.方法调用转换:实参的类型转换为形参的类型

3.算术表达式转换:算数混合运算时,不同类型的项转换为相同的类型再进行运算

4.字符串转换:字符串连接运算时,如果一个操作数为字符串,一个操作数为数值型,则会自动将数值型转换为字符串

5.当一个类对象被塑型为其父类后,它提供的方法会减少

方法的查找:

1.实例方法的查找:从对象创建时的类开始,沿类层次向上查找

2.类方法的查找:总是在引用变量声明时所属的类中进行查找

多态:是指不同类型的对象可以响应相同的消息;从相同的基类派生出来的多个类型可被当作同一种类型对待,可对这些不同的类型进行同样的处理,由于多态性,这些不同派生类对象响应同一方法时的行为是有所差别的

目的:所有的对象都可被塑型为相同的类型,响应相同的消息;使代码变得简单且容易理解;使程序具有很好的“扩展性”

绑定:将一个方法调用同一个方法主体连接到一起

早期绑定:程序运行之前执行绑定

晚期绑定:也叫作“动态绑定”或运行期绑定;基于对象的类别,在程序运行时执行绑定

Math.random()*100;    //生成100以内的数

多态的应用:

向上塑型技术:一个父类的引用变量可以指向不同的子类对象

动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性

构造方法的调用顺序:

1.调用基类的构造方法。这个步骤会不断重复下去,首先被初始化的是分级结构的根部,然后是下一个派生类,等等。直到抵达最深一层的派生类

2.按声明顺序调用成员初始化模块

3.调用派生构造方法

当我们在构造派生类的时候,必须能假定基类的所有成员都是有效的。在构造方法内部,必须保证使用的所有成员都已初始化。因此唯一的办法就是首先调用基类构造方法,然后在进入派生类构造方法之前,初始化所有能够访问的成员

内部类:

在另一个类或方法的定义中定义的类

可访问其外部类中的所有数据成员和方法成员

可对逻辑上相互联系的类进行分组

对于同一个包中的其他类来说,能够隐藏

可非常方便地编写事件驱动程序

声明方式

命名的内部类:可在类的内部多次使用

匿名内部类:可在new关键字后声明内部类,并立即创建一个对象

假设外层类名为Myclass,则该类的内部类名为

Myclass$c1.class (c1为命名的内部类名)

Myclass$1.class (表示类中声明的第一个匿名内部类)

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值