抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程

Posted xgl122

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程相关的知识,希望对你有一定的参考价值。

一个对象是一组状态和行为     

状态 : 包含在对象中的数据。 - 在Java中,这些是对象的字段(字段)

行为 : 对象支持的行为    -  在Java中,这些被称为方法      - 方法只是面向对象的函数     - 调用方法=调用函数

每个对象都有一个类     - 一个类定义方法和字段 - 方法和字段统称为成员 

类定义了类型和实现

       - 类型≈在哪里可以使用对象

       - 实现≈对象如何处理事物

类变量(Java中的静态变量):与类关联的变量,而不是类的实例。 还可以将方法与类关联  classmethods(Java中的静态方法)
要引用类变量和方法,需要将类的名称和类方法或类变量的名称连同句点(‘.‘)一起加入。
不是类方法或类变量的方法和变量称为实例方法和实例变量,要引用实例方法和变量,必须引用类实例中的方法和变量。
类变量和类方法与类相关联,并且每个类都会出现一次。 使用它们不需要创建对象。 实例方法和变量在类的每个实例中出现一次。

静态方法不与任何特定的类实例关联,而实例方法(不带static关键字声明)必须在特定对象上调用。在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

静态变量属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。

技术分享图片

接口(interface)

实现方式是实现该接口的类。

为所有接口的方法提供方法体,则该类将实现一个接口

一个接口可以扩展其他接口

一个类可以实现多个接口

在Java中,API由接口或类指定多个类可以实现相同的API,接口只提供一个API接口定义但不实现APIclass提供了一个API和一个实现

破坏了通过抽象建立的屏障,Java中的接口不能包含构造函数,所以它们必须直接调用其中一个具体类的构造函数

技术分享图片这样可以接口构造,必须用static,不能构造函数

多种实现的目的:不同的性能,不同的行为,不同的性能和行为(HashSet  TreeSet)

成员的可见性修饰符

private-只能从声明类访问
proteced - 可以从声明类的子类(以及包内)
public - 从任何地方访问

继承和重写

严格继承:子类只能添加新方法,无法重写,有final的方法就不能重写

子类中可以通过super关键字调用父类中被重写的方 法

类前加final,不能被继承   @Override         技术分享图片

多态性,子类型和重载

 

 特殊多态技术分享图片重载:同样的方法名,但是参数,返回值类型可能不同,对调用者有好处,因为代码承担了应对不同参数类型的负担,而不是在调用方法前强制调用方转换

重载是一种静态多态    函数根据参数列表解析   静态类型检查    在编译前时确定使用哪个方法 ,重写是在runtime时进行动态检查

函数重载规则:重载函数必须根据参数数量或数据类型而有所不同,参数列表必须有变化技术分享图片

 

 参数多态性和泛型编程

 允许在没有完全指定类型的情况下进行静态类型检查

泛型类声明,泛型接口声明,泛型方法声明和泛型构造函数声明

<>来帮助声明类型变量

①泛型接口,泛型实现类技术分享图片

②泛型接口,非泛型实现类技术分享图片

 

 泛型不能用instanceof()看数据类型

子类型多态

编译器会检查,确保接口中的所有方法在实现类 中均被实现

规格说明的强弱,编译器无法判断

 避免向下类型转换

接口继承接口

技术分享图片

 







以上是关于抽象数据类型(ADT)和面向对象编程(OOP)3.4 面向对象的编程的主要内容,如果未能解决你的问题,请参考以下文章

抽象数据类型(ADT)和面向对象编程(OOP)3.3 抽象数据类型

抽象数据类型(ADT)和面向对象编程(OOP)3.1数据类型和类型检查

抽象数据类型(ADT)和面向对象编程(OOP)3.2规约

2.ADT和类(抽象数据类型和面向对象编程)

软构笔记-8-ADT和OOP中的“等价性”

函数式编程与面向对象编程[3]:Scala的OOP-FP混合式编程与抽象代数理论