本章重点

·面向对象的概念

·类与对象

·构造方法

·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

第3章 面向对象 (上)相关推荐

  1. 第五章 面向对象(上)

    Java是面向对象的程序设计语言,Java语言提供了定义类.成员变量.方法等最基础的功能,类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将引用到类的对象 ...

  2. 《Java基础入门第2版》--黑马程序员 课后答案及其详解 第3章 面向对象(上)

    文章目录 一.填空题 二.判断题 三.选择题 四.简答题 五.编程题 六.原题及其解析 一.填空题 1.封装.继承.多态 2.this 3.private.default.protected.publ ...

  3. 使用Goods类创建十个商品 第四章 面向对象(上)课堂作业2

    使用Goods类,创建10个商品,输出所有商品的信息. 输出所有商品信息 package First; /*作者:马志勇交流 欢迎模仿欢迎借鉴 嘿嘿别忘了 点赞加关注.别忘了 点赞加关注.别忘了 点赞 ...

  4. JavaScript内核系列 第8章 面向对象的JavaScript(下)

    原创作者: abruzzi 接上篇:JavaScript内核系列 第8章 面向对象的JavaScript(上) 8.4实例:事件分发器 这一节,我们通过学习一个面向对象的实例来对JavaScript的 ...

  5. 【JAVA SE】第六章 面向对象、对象和类以及封装

    第六章 面向对象.对象和类以及封装 文章目录 第六章 面向对象.对象和类以及封装 一.面向对象 1.概念 2.面向对象的三大特征 二.对象和类 1.基本概念 2.Java中的对象 3.Java 中的类 ...

  6. 第十五章 面向对象程序设计

    第十五章 面向对象程序设计 OOP:概述 面向对象程序设计(object-oriented programming)的核心思想是数据抽象.继承和动态绑定. 继承(inheritance): 通过继承联 ...

  7. java笔记:第6章 面向对象程序设计

    第6章 面向对象程序设计 6.1面向对象技术基础 面向对象三大特征:封装性, 继承性,多态性 封装性:1. 把属性和方法都放在一起  2.实现信息隐藏 类和对象的关系:类是对象的抽象描述.对象是类的实 ...

  8. 悟透delphi 第十一章 面向对象数据库基础

    第十一章 面向对象数据库基础 第二节数据对象的标识 我们在关系数据库的设计和开发中,可能经常需要一些唯一的编号或标识,用来作为关键字,以区别每一个不同的人,每一张不同的单据,每一次不同的信息登记,等等 ...

  9. 《设计模式解析》第1章 面向对象范型

    第1章 面向对象范型 概述 本章通过和另外一种你熟悉的范型--标准结构化编程相对比,来向你介绍面向对象范型. 面向对象范型的产生是因为使用标准化结构编程,过去的实践面临着挑战.通过清楚地了解这些挑战, ...

最新文章

  1. 高速学会Mac上托管代码到github(具体解释)
  2. 软考高项之沟通与干系人管理-背诵记忆
  3. word精华样式篇之三使用样式集让所有文档风格统一
  4. 机器人铁锈斑斑好吗_工业机器人系统运维员是什么职业?这个职业好吗?
  5. python socket编程_Python学习记录-socket编程
  6. 基于Udp的Socket网络编程聊天程序
  7. 发现Diolar 的边缘检测程序好像也有缺点
  8. 麦肯锡方法:解决问题的七个步骤
  9. html 做报表,创建 HTML 报表
  10. 如何用AE做出动画效果杭州UI设计分享方法
  11. linux系统32位镜像下载,深度Linux Deepin镜像下载
  12. 十种经典运放电路分析
  13. 《需求工程:软件建模与分析》笔记(一)
  14. opencv19:轮廓凸包,距离与匹配
  15. 学习分布式存储应该从哪几方面着手?
  16. 微信开发工具tabBar中的list 图片为啥加载不出来?
  17. 干货分享 | 创业公司绝对不会告诉你他们在用的工具们
  18. 尤雨溪:Vue3即将成为新的默认版本!
  19. 竖屏java转横屏_android设置横屏和竖屏的方法
  20. 目前从事工作的想法和建议

热门文章

  1. php去掉 部分字符,输出,php如何去除某个字符
  2. 注解 java 原理_Java注解基本原理
  3. linux下mysql数据库目录迁移_mysql实现linux下数据库目录迁移
  4. linux 内核参数优化 mysql_Linux记录-mysql参数优化
  5. winform list集合怎么 in过滤_你有真正把 Python Set 当作数学集合吗?
  6. 如何打造领英朋友圈_领英点赞,请摆好姿势!
  7. OpenCV-Python实战(20)——OpenCV计算机视觉项目在Web端的部署
  8. jdbc教程_JDBC教程
  9. 在VS中查看MSI项目的Product Code
  10. tomcat之jsp连接mysql数据库