抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程
Posted xgl122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程相关的知识,希望对你有一定的参考价值。
一个对象是一组状态和行为
状态 : 包含在对象中的数据。 - 在Java中,这些是对象的字段(字段)
行为 : 对象支持的行为 - 在Java中,这些被称为方法 - 方法只是面向对象的函数 - 调用方法=调用函数
每个对象都有一个类 - 一个类定义方法和字段 - 方法和字段统称为成员
类定义了类型和实现
- 类型≈在哪里可以使用对象
- 实现≈对象如何处理事物
类变量(Java中的静态变量):与类关联的变量,而不是类的实例。 还可以将方法与类关联 classmethods(Java中的静态方法)
要引用类变量和方法,需要将类的名称和类方法或类变量的名称连同句点(‘.‘)一起加入。
不是类方法或类变量的方法和变量称为实例方法和实例变量,要引用实例方法和变量,必须引用类实例中的方法和变量。
类变量和类方法与类相关联,并且每个类都会出现一次。 使用它们不需要创建对象。 实例方法和变量在类的每个实例中出现一次。
静态方法不与任何特定的类实例关联,而实例方法(不带static关键字声明)必须在特定对象上调用。在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态变量属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。
接口(interface)
实现方式是实现该接口的类。
为所有接口的方法提供方法体,则该类将实现一个接口
一个接口可以扩展其他接口
一个类可以实现多个接口
在Java中,API由接口或类指定,多个类可以实现相同的API,接口只提供一个API,接口定义但不实现API,class提供了一个API和一个实现
破坏了通过抽象建立的屏障,Java中的接口不能包含构造函数,所以它们必须直接调用其中一个具体类的构造函数
这样可以接口构造,必须用static,不能构造函数
多种实现的目的:不同的性能,不同的行为,不同的性能和行为(HashSet TreeSet)
成员的可见性修饰符
private-只能从声明类访问
proteced - 可以从声明类的子类(以及包内)
public - 从任何地方访问
继承和重写
严格继承:子类只能添加新方法,无法重写,有final的方法就不能重写
子类中可以通过super关键字调用父类中被重写的方 法
类前加final,不能被继承 @Override
多态性,子类型和重载
特殊多态:重载:同样的方法名,但是参数,返回值类型可能不同,对调用者有好处,因为代码承担了应对不同参数类型的负担,而不是在调用方法前强制调用方转换
重载是一种静态多态 函数根据参数列表解析 静态类型检查 在编译前时确定使用哪个方法 ,重写是在runtime时进行动态检查
函数重载规则:重载函数必须根据参数数量或数据类型而有所不同,参数列表必须有变化
参数多态性和泛型编程
允许在没有完全指定类型的情况下进行静态类型检查
泛型类声明,泛型接口声明,泛型方法声明和泛型构造函数声明
<>来帮助声明类型变量
①泛型接口,泛型实现类
②泛型接口,非泛型实现类
泛型不能用instanceof()看数据类型
子类型多态
编译器会检查,确保接口中的所有方法在实现类 中均被实现
规格说明的强弱,编译器无法判断
避免向下类型转换
接口继承接口
以上是关于抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程的主要内容,如果未能解决你的问题,请参考以下文章
抽象数据类型(ADT)和面向对象编程(OOP)3.3 抽象数据类型