第五章 面向对象(基础篇)
一、面向对象的基本概念:封装性、继承性、多态性
二、类与对象:
①类:模板,共性 对象:具体,个性
②类的定义: class 类名称{
数据类型属性; //声明成员变量
…
//定义方法内容
public 返回值数据类型方法名称(参数1,参数2…){
程序语句;
[return 表达式;]
}
}
③对象的创建:类名对象名称 = null; //声明对象
对象名称 = new 类名(); //实例化对象
类名对象名称 = new 类名(); //简写
所有的对象名称都在栈内存中保存(保存的实际是其对应的堆内存空间的访问地址)
而对象的具体内容则保存在对应的堆内存之中,
必须用new开辟堆内存空间
④访问对象中的属性和方法:
访问属性:对象名称.属性名
访问方法:对象名称.方法名()
⑤PS: 1、引用数据类型就是指一段堆内存空间可以同
时被多个栈内存指向
2、引用传递:将一个堆内存空间的使用权给多
个栈内存空间,每个栈内存空间都可以修改
堆内存的内容
3、一个栈内存空间只能指向一个堆内存空间,
如果要指向其他的堆内存空间,则必须先断
开已有的指向才能分配新的指向
4、Java本身提供垃圾收集机制(GC)
三、封装性:
①含义:指对外部不可见
②关键字:private
③关于private的补充说明:
1、类中全部属性必须封装,封装之后的属性必
须通过setter和getter方法进行访问
2、private声明的属性和方法只能在类内部调用
3、调用本类中的方法,可以直接写方法名调用,
也可以使用“this.方法名()”强调
四、构造方法:
①作用:初始化,值传递
②定义格式: class 类名称{
//无返回值声明,构造方法名与类名称一致
访问权限类名称(数据类型参数…){
程序语句;
… //构造方法没有返回值
}
}
③PS: 1、调用new实例化对象时才会调用构造方法
2、无明确声明时,Java在编译时会自动生成一
个无参构造方法
3、已明确声明一个构造方法时,程序将不会生
成默认构造方法
4、与普通方法一样,构造方法是可以重载的
五、匿名对象
①定义:没有明确地给出名称的对象
②注意: 1、一般匿名对象只使用一次
2、只在堆内存中开辟空间,而不存在栈内存
的引用
3、实际开发中通常作为其他实例化对象的参
数传递
六、String
①实例化String对象的方法
1、直接为String赋值(实质上是把一个在堆中
开辟好的堆内存空间的使用权给它,好处是当字符串内容相同时,多个名称指向同一个空间引用,不再开辟新的堆内存空间)
例:String str = “hello”;
2、用标准的new调用构造方法实例化(不管如
何都会再开辟一个新的空间,原不用空间成为垃圾空间)
例:String str = new String(“hello”);
②String的比较
1、地址比较:==
2、内容比较:equals()
③字符串的内容不可改变
1、字符串的内容一旦声明则不可改变
2、一个String对象内容的改变实际上是通过内
存地址的“断开-连接”变化完成的,而本身
字符串中的内容并没有任何变化
七、引用传递及基本应用
①定义:将堆内存空间的使用权交给多个栈内存空间
②在对象引用传递上也可以在一个类中接收自己本类的对
象,而且接收完后可以方便地通过此对象直接进行本类中封装属性 的访问(此种引用方式的传递在关于对象的比较操作时才会经常使用)
八、this关键字
①表示类中的属性:this.name = name;
②强调调用本类中的方法:this.getInfo();
③表示当前对象:Person p1 = this;
④调用本类的构造方法:this();
1、使用this()调用构造方法必须放在构造方法的
首行
2、程序中至少要存在一个构造方法是不用this
调用其他构造方法的,一般都会将无参构造
方法作为出口,即在参构造方法中最好不要
再去调用其他构造方法
九、static关键字
①使用static声明属性
1、全局属性(静态属性):被所有对象共享
2、类属性:可以直接由类名调用
②使用static声明方法
1、类方法:可以直接由类名调用
2、非static方法可以调用static方法,但static
方法不能调用非static方法
③理解main方法
public:表示此方法可以被外部调用
static:表示此方法可以由类名称直接调用
void:主方法是程序的起点,不需要返回值
main:系统规定好默认调用的方法名称
String args[]:表示运行时的参数
④Java中常用的内存区域
1、栈内存空间:保存所以对象名称(地址)
2、堆内存空间:保存每个对象具体属性内容
3、全局数据域:保存static类型的属性
4、全局代码域:保存所有的方法定义
十、代码块
①定义:是指使用{}括起来的一段代码
②分类:
1、普通代码块:直接在方法或语句中定义,定
义在其中的是局部变量
2、构造块:直接在类中定义,每次实例化都会
执行
3、静态代码块:使用static关键字声明的,(只
执行一次)
③优先级:
静态代码块>主方法>构造块>构造方法
十一、构造方法私有化
①实例化方法:在内部产生本类的实例化对象
②意义:只要将构造方法私有化,就可以控制实例化对象
的产生(单例设计模式)
十二、对象数组
①定义:包含了一组相关对象的集合
②动态初始化:数组先开辟空间,使用数组的每一个对象
时都要分别赋值
Person per[] = new Person[2];
per[0] = new Person(“张三”);
per[1] = new Person(“李四”);
③静态初始化:
Person per[] ={ new Person(“张三”),new Person(“李四”)};
十三、内部类
①定义:在类的内部定义的类
②声明格式: 标识符 class 外部类的名称{
//外部类的成员
标识符 class 内部类的名称{
//内部类的成员
};
}
③优点:可以方便地访问外部类中的私有属性,代码简单
④使用static定义内部类:用static声明的内部类变成了外
部类,但是用static声明的内部类不能访问非static的外
部类属性
⑤在外部访问内部类:
外部类.内部类内部类对象 = 外部类实例.new 内部类();
生成的class文件是Outer$Inner.class的形式
⑥在方法中定义内部类:在方法中定义的内部类不能直接
访问方法中的参数,除非参数前加上final关键字
相关推荐
**Java程序设计基础篇(第8版)第五章编程题答案** 在学习Java编程时,实践是提升技能的关键。本书的第五章可能涵盖了基础至进阶的编程概念,旨在帮助读者掌握面向对象编程的核心思想。编程题是检验理解并深化理论...
第5章 行为模式 147 5.1 chain of responsibil ity(职责链) —对象行为型模式 147 5.2 command(命令)—对象行为型 模式 154 5.3 interpreter(解释器)—类行为型 模式 162 5.4 iterator(迭代器)—对象...
第五章的课后习题代码提供了实践机会,帮助读者巩固理论知识,提高编程技能。 在Java中,数据结构主要包括数组、链表、栈、队列、树和图等。数组是最基本的数据结构,它允许以固定大小存储同类型的数据。链表则通过...
本资源提供了 Java 语言程序设计基础篇第十三章的练习标准答案,涵盖了面向对象编程、集合框架、泛型、方法重写和数组操作等多个知识点。这将有助于读者更好地理解 Java 语言的基本概念和编程技术。
Python 面向对象程序设计基础知识点 面向对象程序设计是 Python 编程语言中的一种编程范式,它提供了一种组织代码的方式,使得代码更加模块化、可维护和可重用。面向对象程序设计基于三个基本概念:类、对象和继承...
《Java语言程序设计第10版基础篇》是学习Java编程的重要教材,第四章通常涵盖了Java的基本语法和核心概念。本资源提供了该章节的课后习题答案,旨在帮助学习者检验自己的理解并深化对Java知识的掌握。下面将详细阐述...
**描述解析:**描述中给出的链接可能指向一篇有关该主题的博客文章,但实际内容无法直接获取,因此我们将基于通常的第六章面向对象编程的内容进行讲解。 **标签解析:**"源码"和"工具" 源码可能涉及本章中的实例...
这四个核心概念为理解面向对象编程提供了基础。 1. **结构化方法**:指的是如何组织和设计软件系统的一种方式,它通过将复杂问题分解成更小、更容易管理的部分来实现。在面向对象编程中,这种结构化通常是通过类和...
第八版的基础篇教材通常涵盖了Java语言的核心元素,包括类、对象、数据类型、控制结构、数组、字符串、异常处理、输入/输出以及简单的面向对象编程概念。本压缩包中的"java语言程序设计第八版基础篇编程题答案"提供...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
【C++面向对象程序设计】本篇主要涉及C++的基础知识和面向对象编程的基本概念,通过杜茂康老师的课程习题来深入理解这些概念。 1. **C++基础**: - **数据输入输出**:在实验一中,通过`cin`和`cout`进行数据的...
在本压缩包“chapter9.rar”中,包含的是关于Java语言程序设计与数据结构基础篇的第9章课后习题代码。这个章节通常会深入探讨数据结构与算法,这是编程学习中的核心部分,特别是对于Java这样的面向对象编程语言而言...
一、Python基础概述 二、Python基础教程 老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python...项目篇12-tornado项目篇第五节 项目篇13-tornado第六节 项目篇14-整站爬虫 项目篇15-聊天室
在本压缩包“Java语言程序设计与数据结构(基础篇)第8章课后习题代码chapter8.rar”中,包含的是关于Java编程语言与数据结构基础篇的第八章课后习题解答代码。这个资源对于正在学习Java编程,尤其是对数据结构有...
【Java语言程序设计-基础篇】第十章主要探讨了面向对象编程的核心概念,特别是如何利用这一范式有效地解决问题。在本章中,作者Liang强调了面向对象编程的优势,并介绍了几个关键的语言特性,以帮助读者深入理解并...
《.NET 4.0面向对象编程漫谈》资源包,包含《基础篇》的所有源码,全书目录,前言和序等PDF文档。 共6个分卷RAR压缩包,这是第5部分。 获取更多资源及与作者交流,请访问金旭亮个人博客: ...
Java程序语言设计是Java开发者学习过程中的一本经典教材,梁勇教授的第十版结合了基础篇与进阶篇,深入浅出地讲解了Java编程的核心概念和技术。此压缩包包含了该书的课后习题答案,对于正在学习或已经学过这本书的...
Java语言程序设计是编程学习的重要领域,特别是在基础篇中,主要涵盖了Java编程的基本概念、语法和常用编程技巧。本资料出自梁勇与戴开宇译的《Java语言程序设计》第十版,是一份深入浅出的Java入门教程。在"book10...
根据提供的文件信息,本篇知识点将专注于JAVA面向对象编程的相关概念、特点以及如何通过书籍《JAVA面向对象编程》(孙卫琴著)学习该编程范式。面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件程序。...
9. **面向对象概念**:虽然深入的面向对象编程通常在后续章节讨论,但基础篇可能已经引入了类和对象的概念,例如创建简单的类,理解封装、继承和多态。 10. **练习题设计**:编程题通常会从简单到复杂,涵盖以上...