面向对象笔记

简介:
抽象 
所谓抽象(abstraction),就是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究工作有关的实质性内容加以考察,形成对所研究问题正确的、简明扼要的认识。例如,“马”就是一个抽象的概念,实际上没有任何两匹马是完全相同的,但是我们舍弃了每匹马个体之间的差异,抽取其共同的、本质性的特征,就形成了“马”这个概念。
抽象是科学研究中经常使用的一种方法,是形成概念的必要手段。在计算机软件开发领域,抽象原则的运用非常广泛,概括起来,可分为过程抽象和数据抽象两类。 
 
过程抽象是指:软件开发者可以把任何一个完成确定功能的操作序列都看作是一个单一的实体,尽管它实际上可能是由一系列更低级的操作完成的。运用过程抽象,软件开发者可以把一个复杂的功能分解为一些子功能(模块),如果子功能仍比较复杂,则可以进一步分解。这使得开发者可以在不同的抽象层次上考虑问题,在较高层次上思考时可以不关心较低层次的实现细节。面向过程的程序设计采用的是过程抽象方法。
使用过程抽象有利于控制、降低整个程序的复杂度,但是,这种方法允许在全系统的范围内进行功能的描述,本身自由度大,难于规范化和标准化,不易保证软件的质量,而且操作起来也有一定难度。 
数据抽象把系统中需要处理的数据和施加于这些数据之上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的授权操作,并限定数据的值只能由这些操作来观察和修改。因此,数据抽象是相对于过程抽象更为严格、更为合理的抽象方法。
面向对象的程序设计就是采用数据抽象这一方法来构建程序中的类和对象的。它强调把数据和操作结合为一个不可分的系统单位——对象,对象的外部只需要知道这个对象能做什么,而不必知道它是如何做的。
 

抽象作用:提取同类对象共同的特征和功能

 

 

实例方法可使用圆点符号来访问
–方法被调用的对象在圆点左边,而方法的名称在圆点右边
–例如:   Obj.isAvailable();
 
封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。封装具有下述特征:
(1) 在类的定义中设置访问对象属性(数据成员)及方法(成员方法)的权限,限制本类对象及其他类的对象使用的范围。
(2) 提供一个接口来描述其他对象的使用方法。
(3) 其他对象不能直接修改本对象所拥有的属性和方法。 
 
定义:组织.class文件的存放方式
作用:
防止命名冲突
访问权限控制
包允许将类组合成较小的单元(类似文件夹),使其易于找到和使用相应的类文件
有助于避免命名冲突。在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突
包允许在更广的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类 
 

在Java程序设计中,继承是通过extends关键字来实现的。在定义类时使用extends关键字指明新定义类的父类,新定义的类称为指定父类的子类,这样就在两个类之间建立了继承关系。这个新定义的子类可以从父类那里继承所有非private的属性和方法作为自己的成员。实际上,在定义一个类而不给出extends关键字及父类名时,默认这个类是系统类object的子类

 

子类的构造方法

先调用父类构造方法,再调用子类构造方法

要调用父类构造方法,使用关键字 super

子类构造方法的名称与类的名称相同

 

 

调用父类构造方法的语法为:

 

  super()  或 super(参数列表) ;

 

super () 方法始终指向调用类的父类

 

 

注意:

一个类只有一个父类,一个父类可以有多个子类

在子类中,凡是继承来的属性,必须要调用父类的构造方法来初始化

 

 

 

 

•static修饰符修饰的方法叫静态方法
•目的
–使该方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法
 
 
由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类
抽象方法必须声明在抽象类中
抽象方法语法:

abstract type method_name(parameter_list);

声明抽象类语法:

    abstract class{…… }

使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节
 
多重继承是指一个子类可以有多个直接父类,该子类可以全部或部分继承所有直接父类的数据成员及成员方法。例如,冷藏车既是一种汽车,也是一种制冷设备,所以它是汽车的子类也是制冷设备的子类。自然界中这种多继承结构到处可见。
在面向对象的程序设计语言中,有些语言(如C++)提供了多继承机制。而Java出于安全性、简化程序结构的考虑,不支持类间的多继承而只支持单继承。然而在解决实际问题的过程中,在很多情况下仅仅依靠单继承不能将复杂的问题描述清楚。为了使Java程序的类间层次结构更加合理,更符合实际问题的本质,Java语言提供接口来实现多重继承机制
接口就是某个事物对外提供的一些功能的申明
可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点
使用interface关键字定义接口
一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现
 

 总结

•封装、继承和多态是面向对象的主要特征
•继承可提高代码的重用性,使用extends关键字来实现。除了构造方法之外,父类的所有方法和属性都被子类的对象继承
•多态性是不同的实例对象以不同的方式对相同的信息作出不同的表现
•访问修饰符用于确定访问类成员的方式
•Java 常用修饰符有 static、final、abstract
•接口是Java编程一项重要的技术,同过它可以实现多态,同时它也弥补了Java单一继承的不足
目录
相关文章
|
26天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
32 0
|
14天前
|
算法 Java 程序员
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
21 0
|
2月前
|
人工智能 运维 Java
面向对象进阶
面向对象进阶
37 0
|
10月前
|
存储 开发框架 Java
|
11月前
|
程序员 测试技术 C语言
c++面向对象程序设计入门
c++面向对象程序设计入门
139 0
|
12月前
|
存储 机器学习/深度学习 编译器
面向对象程序设计 C++总结笔记(1)
理解面向对象程序设计的基本原理,掌握面向对象技术的基本概念和封装性、继承性和多态性,能够具有面向对象程序设计思想。掌握C++语言面向对象的基本特性和C++语言基础知识,能够使用C++语言进行计算机工程领域复杂工程问题的表述,能够进行C++程序阅读和分析。
130 0
面向对象程序设计-第一章:面向对象程序设计基础
面向对象程序设计-第一章:面向对象程序设计基础
137 0
面向对象程序设计-第一章:面向对象程序设计基础
面向对象程序设计-第二章
面向对象程序设计-第二章
37 0
面向对象程序设计-第二章
|
数据安全/隐私保护 C++
C++面向对象程序设计简介
C++面向对象程序设计简介
171 1
|
存储
笔记08-面向对象
笔记08-面向对象
笔记08-面向对象

热门文章

最新文章