第3章 面向对象 (上)

本章重点

·面向对象的概念

·类与对象

·构造方法

·this和static关键字

·内部类

3.1 面向对象的概念

面向对象:在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之前的联系。

1.封装性

封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节。

2.继承性

主要是描述的是类与类之间的关系,通过继承,可以在无须重新编写原有类的情况下,对原有类的功能进行扩展。

继承不仅增强了代码复用性,提高了开发效率,而且为程序的修改补充提供了便利。

3.多态性

指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其它类继承后,他们可以具有不同数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。

3.2 类与对象

面向对象的思想中提出两个概念,既类和对象。

类是对某一类事务的抽象描述,而对象用于表现现实中该类事物的个体。

类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。

3.2.1 类的定义

类是对象的抽象,它用于描述一组对象的共同特征和行为。

成员变量用于描述对象的特征,也被称作属性;成员方法用于描述对象的行为,可见简称为方法。

At:在类中定义的变量被称为成员变量;定义在方法中的变量称为局部变量。

3.2.2 对象的创建与使用

在Java程序中可以使用new关键字来创建对象,具体格式如下:

Fm:类名 对象名称 = new 类名();

例如,创建Person类的实例对象代码如下:

Person p = new Person();

变量p引用的对象简称为p对象.

通过对象的引用来访问对象所有的成员,具体格式如下:

Fm: 对象引用.对象成员,通过一个例子来说明如何访问对象的成员

在实例化对象时,Java虚拟机会自动为成员变量进行初始化,针对不同类型的成员变量,Java虚拟机会赋予不同的初始值。如下表所示

3.2.3 类的设计

对象是通过类创建出来的。

3.2.4 类的封装

所谓类的封装是指在定义一个类时,将类中的属性私有化,即使用private关键字来修饰,私有属性只能在它所在类中被访问。

3.3 构造方法

3.3.1 构造方法的定义

(1)方法名与类名相同

(2)在方法名的前面没有返回值类型的声明

(3)在方法中不能使用return语句返回一个值

3.3.2 构造方法的重载

构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

At: 在Java中的每个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统就会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在某方法体中没有任何代码,即什么都不做;

下面程序中的Person类的两种写法效果是完全一样的.

为了方便实例化对象,构造方法通常会使用public来修饰;

3.4 this关键字

关键字this,用于在方法中访问对象的其他成员。

(1)    通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。

(2)    通过this关键字调用成员方法。

(3)    构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用”this([参数1,参数2……])”的形式来调用其他的构造方法。

在使用this调用类的构造方法时,应注意以下几点

(1)    只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用

(2)    在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。

(3)    不能在一个类的两个构造方法中使用this互相调用

3.5 垃圾回收

Java垃圾回收机制——在Java中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。

当一个对象在内存中被释放时,它的finalize()方法会被自动调用,因此可以在类中通过定义finalize()方法来观察对象何时被释放。

除了等待Java虚拟机进行自动垃圾回收,也可以通过调用System.gc()方法来通知Java虚拟机立即进行垃圾回收。

3.6 static关键字

3.6.1 静态变量

在一个Java类中,可以使用static关键字来修饰成员变量,改变了被称作静态变量;静态变量被所有实例共享,可以使用”类名.变量名”的形式来访问。

At:static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。

3.6.2 静态方法

静态方法:只需要在类中定义的方法前加上static关键字

静态方法可以使用”类名.方法名”的方式来访问,也可以通过类的实例对象来访问

静态方法不需要创建对象就可以调用

At:在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象、

3.6.3 静态代码块

在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块;当累被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。

3.6.4 单例模式

单例模式是Java中的一种设计模型,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。

被关键字final修饰的变量为常量,其值不可改变。

3.7内部类

在Java中,允许在一个累的内部定义类,这样的类称作内部类,这个内部类所在的类所在外部类。 根据内部类的位置、修饰符和定义可分为成员内部类、静态内部类、方法内部类。

3.7.1 成员内部类

在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。

内部类可以在外部类中被使用,并能访问外部类的成员。

创建内部类对象的具体语法格式如下:

Fm: 外部类名.内部类名 变量名 = new 外部类名(). new 内部类名();

3.7.2 静态内部类

可以使用static关键字来修饰一个成员内部类,该内部类被称作静态内部类。

创建静态内部类对象的具体语法:

Fm: 外部类名.内部类名 = new 外部类名.内部类名();

At: (1) 在静态内部类中只能访问外部类的静态成员

(2) 在静态内部类中可以定义静态的成员,而在非静态的内部类中不允许定义静态的成员。

3.7.3 方法内部类

方法内部类是指在成员方法中定义的类,它只能在当前方法中被调用

3.8 Java的帮助文档

3.8.1 Java的文档注释

3.8.2 JDK帮助文档的使用

原文地址:https://www.cnblogs.com/CSAH/p/10517689.html

时间: 2024-12-20 20:47:01

第3章 面向对象 (上)的相关文章

第04章(面向对象——上)

1 /***************** 2 ***第四章面向对象(上) 3 *******知识点: 4 **************1.类和对象 5 ******************1.1 关键字 6 ******************1.2 定义 7 ******************1.3 使用 8 **************2.方法和属性 9 ******************2.1 关键字 10 ******************2.2 方法重载和重写 11 ******

第05章(面向对象——中)

1 /***************** 2 ***第五章面向对象(中) 3 *******知识点: 4 **************1.多态 5 ******************1.1 概念 6 ******************1.2 实现方式 7 **************2.抽象类 8 ******************2.1 关键字 9 ******************2.2 概念定义 10 ******************2.3 使用 11 ************

第7章 面向对象程序设计

第7章 面向对象程序设计 7.1 面向对象概述 面向对象(Object Oriented)的英文缩写是OO,它是一种设计思想.从20世纪60年代提出面向对象的概念到现在,它已经发展成为一种比较成熟的编辑思想,并且逐步成为目前软件开发领域的主流计技术.如我们经常听说的面向对象编程(Object Oriented Programming,即OOP)就是主要针对大型软件设计而提出的,它可以使软件设计更加灵活,并且能更好地进行代码复用. 面向对象中的对象(Object),通常是指客观世界中存在的对象,具

范磊 C++ 第6章 面向对象

1 // section_6.cpp : Defines the entry point for the console application. 2 //范磊C++ 第6章 面向对象 3 4 #include "stdafx.h" 5 #include "iostream" 6 7 8 9 //6.3.7 对象只能调用类中存在的方法(函数) 10 using std :: cout; 11 class Human 12 { 13 public: 14 void w

《软件工程 ——理论、方法与实践》知识概括第七章 面向对象分析

第7章 面向对象分析    面向对象的分析模型:功能模型.分析对象模型.动态模型. 一.分析的概念 分析类可以划分为实体类.边界类和控制类. 在UML语言中,使用构造型<<entity>>.<<boundary>>和<<control>>分别表示实体类.边界类.控制类. 分析活动:理解用例模型.识别分析类(识别实体类.识别边界类.识别控制类).定义交互行为.建立分析类图(定义属性.定义行为.定义关系).评审分析模型.分析过程是一个循环

《白帽子讲WEB安全》学习笔记之第8章 文件上传漏洞

第8章 文件上传漏洞 8.1 文件上传漏洞概述 文件上传漏洞是指用户上传一个可执行的脚本文件,并通过此脚本文件活动执行服务器端的能力. 原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件. 文件上传漏洞安全问题: q  上传文件是WEB脚本文件,服务器的WEB服务器解释并执行了用户上传的脚本,导致代码执行: q  上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行

第十九章 面向对象的工具

学习要点:1.OOP 的魔术方法2.类函数和对象函数3.OOP 的反射API PHP通过类和方法等语言结构支持面向对象编程.同时也通过对象相关的函数和内置类为面向对象提供广泛支持. 一.OOP的魔术方法 PHP引入了__autoload()内置方法来自动包含类文件.__autoload()应该被写成单个参数的方法.当PHP引擎遇到试图实例化未知类的操作时,会调用__autoload()方法,并将类名当作字符串参数传递给它. function __autoload($_className) { r

【数据结构】第6章 树(上)

第一次用markdown-..好高端的赶脚 数据结构第6章 树(上) §6.1 树的定义和基本术语 树是n(n>=0)个结点的有限集 在非空树中有且仅有一个特定的根(root) 树的结构定义是一个递归的定义,即在树的定义中又用到了树的概念,有嵌套集合表示法,广义表表示法和凹入表示法等. 术语: 结点,结点的度(子树个数),叶(度为0),树的度(最大结点度),孩子,父亲,兄弟,祖先(上溯所有结点),子孙(下溯所有结点),层次,堂兄弟,树的深度(最大层次),有序树(左右子树有顺序,如二叉树),无序树

C++ Primer学习总结 第15章 面向对象程序设计

第15章 面向对象程序设计 1.    构造基类和派生类. 其中A类是基类,B类是派生类.派生类的构造函数必须重新写过,不能继承.(因为毕竟两个类的类名都不一样,不可能构造函数继承)只继承其他的成员函数和成员变量. 派生类可以覆盖基类的虚函数,但是也可以选择不覆盖(即直接使用父类的函数版本)比例A类的print_1()虚函数就没有被覆盖. 基类的静态成员:如果基类有一个静态成员,那么基类和所有派生类都共同拥有这仅有的一个静态成员. 2.    基类的虚函数默认实参最好与派生类的虚函数默认实参一致