006 理解面想对象程序设计

Java SE 第八讲

 

1、面向对象程序设计(Object Oriented Programming,OOP;Object Oriented Design, OOD)。什么是面向对象?在面向对象程序设计中有两个重要的概念:类(class)与对象(object)。

 

2、类:类是一种抽象的概念,类中包含了数据(通常使用名词来表示,数据在类中称作属性【Property或Attribute】或者叫成员变量【Member variable】)与对数据的操纵(通常使用动词来表示,这种操纵在类中称作方法【method】)。比如说人就是一种抽象的概念,人具有姓名、年龄、身高等数据,还有吃饭、跑步等操纵数据的动作。

1)类所包含的内容:属性和方法。

2)如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,换句话说,定义的多个类可以都不是public的。 对于只用一个public类的源文件,main方法一定要放在这个类中;对于没有public类的源文件,main方法可以放在任意一个方法内。

 

3、对象:对象是一种具体的概念,是类的一种具体表示方式。比如说人是一个类,而张三、李四、王五等具体的人就是对象。

4、 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。先有类,然后由类来生成对象(Object)。对象又叫做实例(Instance)。生成一个对象的过程又叫做实例化。

5. 面向对象程序设计的三大基本特征:继承(Inheritence)、封装(Encapsulation)、多态(Polymorphism)

6. 命名约定

a) 类:首字母大写,如果一个类名由多个单词构成,那么每个单词的首字母都大写,中间不使用任何的连接符。比如Person类,MemberTest类。

b) 方法:首字母小写。如果一个方法由多个单词构成,那么第一个单词的所有字母全都小写,从第二个单词开始,每个单词的首字母大写。比如add,addThreeInt。

c) 属性:命名约定与方法相同。比如age,ageOfPerson。

 

 信息的隐蔽

 

 

面向对象的三大特征:封装、继承与多态。

 

只要某个编程语言是属于面向对象编程语言,它就必须具有这三个特征。Java也不例外。

 

下面我们会先来说说面向对象特征中的封装,但是在说它之前,还是先来说说信息的隐藏。这里,隐藏就像是封装的先锋官,没有了隐藏,封装就无从谈起。

 

我们已经知道了,Java中类和对象的概念,来自于我们的真实世界的抽象。那么我们在声明一个类,并根据类来创建对象的时候,就要估计它的真实合理性。

 

比如前面的学生类示例中,声明了age年龄属性。类型为整数类型。年龄是用来描述学生信息的。那么,如果运行其他的用户(比如其他的类或者对象)可以直接操作对象的属性,就会出现一些不必要的问题。

 

例如:将年龄(age)的值设置为1000。

 

虽然这在语法上是没有问题的,但是,我们知道,在现实世界中,这种情况是绝对不可能出现的。如果在程序的其它部分使用到了这个age,就可能会引起问题。

 

因此,一般而言,应该将属性定义为private(私有的)的,这样,只有类本身才可以访问这个属性,而外部程序或其他的类是不能访问它的(private的详细说明后面章节说明)。

 

通过定义不同的方法,并且将这些方法设置为public或Default来访问这些属性,这样,我们可以通过在方法中加入一些逻辑判断的方法来操作属性,例如,将年龄的上限设置为100,将下限设置为10等,这样就不会出现年龄为1000的情况了。一个改进后的Student类的定义如下(省略了其他属性和相应的方法):

 

 

public class Student1 {
	// 定义属性
	private int age;

	// 定义属性“age”的设置方法
	public void setAge(int s_age) {
		if (s_age > 100) {
			age = 100;
		} else if (s_age < 10) {
			age = 10;
		} else {
			age = s_age;
		}
	}

	// 定义属性“age”的获取方法
	public int getAge() {
		return age;
	}
}

 

这里先简单说明一下,在setAge方法中,if逻辑表示分支判断,很容易读出,当用户提供的参数年龄值大于100,则最多年龄可以记为100,如果小于10,则最小年龄可以记为10,如果年龄值在10到100的范围内,可以完成用户的赋值要求。

 

当然,这个逻辑可以根据实际情况来修改,这样一来,用户(其他的对象和类)就无法直接对年龄属性“胡作非为”了,他必须在我们的监督下完成操作。

 

这就是信息的隐藏。即将类中不想让其他用户直接操作的属性(或者方法,一般主要指属性)设置为private修饰,只允许在该类里面进行操作。

 

 

 

 

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR 本篇文章我们将深入了解 Java 语言中的类与对象,探讨构造器、`static`、`final`、包和 JAR 文件。这些概念是面向对象编程的核心,对于理解和掌握 Java 至关重要。 阅读详情

相关推荐

海鸥派OpenEuler开发板实战:从烧写到SSH连接的完整指南

本文提供海鸥派OpenEuler开发板从开箱到SSH远程连接的完整实战指南。详细介绍了基于海思SD3403/SS928芯片的算力开发板系统烧写、存储扩容、网络配置等关键步骤,帮助开发者快速上手这款AI边缘计算设备,并实现高效的远程开发与管理。

ruby5的博客 1120

JavaSE0006_理解面想对象程序设计

Java SE 第八讲   1、面向对象程序设计(Object Oriented Programming,OOP;Object Oriented Design, OOD)。什么是面向对象?在面向对象程序设计中有两个重要的概念:类(class)与对象(object)。   2、类:类是一种抽象的概念,类中包含了数据(通常使用名词来表示,数据在类中称作属性【Property或Attribute

hoonee 557

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5906

面试总结之谈谈你对面向对象的理解

对面向对象的理解 在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。 面向对象有三大特性,封装、继承和多态。 封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代

SamHan的博客 4万+

pi-star图形界面安装指南

pi-star图形界面安装指南,MMDVM热点安装,树莓派3B+热点

blueisman的专栏 1908

001-SE-0006-异常

Throwable是所有异常和错误的父类,有2个子类 * Error 错误: * 程序中不做处理 * 例如由于内存条太小导致内存溢出 * Exception 异常 * 运行期异常 * 运行时发生的异常,程序中不做处理 * 一般是因为代码逻辑不严谨导致 * 例如 int num = 1/0; * 编译期异常 * 非运行期异常都是编译期异常 * 程序...

qq_30712357的博客 210

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第一部分:AI遥感工程师的基础设施与工具链-文章 4:传统遥感分析与机器学习基线

本章将系统性地介绍经典遥感分析工作流,从数据预处理到多维度特征工程,再到如何利用经典的机器学习模型(如随机森林、支持向量机)进行监督与非监督学习。我们将通过一个完整的“智慧农业作物分类”项目实战,展示如何利用我们之前构建的数据湖和工具链,从原始数据到最终的分析结果,构建一个性能可靠、可解释性强的基线系统。更重要的是,我们将深入剖析这种传统方法的局限性,从而为后续章节引入遥感大模型的必要性提供强有力的论证。

panshengwu的博客 704

关于面向对象和面向过程的程序设计思想的思考和理解

本来是要写一片关于近期工作、学习和自己个人思想方面的文章,但是由于思路还未成形,写起来比较棘手,就先把今天自己结合在C++课上老师关于编程思想的讲解简单的加入自己的一些理解、体会后大概的说说自己对他们一些新的认识,故而命名之为《涅槃之关于面向对象和面向过程的程序设计思想的思考和理解>》。                                                      

bihe0832的专栏 3933

从AXI到CHI:深入解析基于Credit的流量控制如何优化NoC设计

本文深入解析了从AXI握手式流控到CHI基于Credit的流量控制机制的演进。通过对比传统流控的瓶颈,详细阐述了Credit机制如何通过信用预分配和记账系统,有效解决FIFO气泡、时序收敛等难题,从而优化NoC设计的带宽利用率、降低延迟并提升系统可扩展性。

weixin_29227585的博客 522

从CCD数据上报看wxHOOK的封号风险与规避

本文深入分析了微信CCD数据上报机制对wxHOOK的检测逻辑与封号风险,揭示了调试器路径暴露、非白名单DLL加载和内存校验失败等关键风险点。通过实战案例和规避方案,帮助开发者理解如何安全使用wxHOOK技术,避免封号风险,包括内存镜像欺骗、内核级隐蔽和硬件辅助方案等高级技巧。

weixin_27875131的博客 625

对面象对象概念的理解、解释

写在前面的话:   由于工作原因已经半年多没好好理下Java了,现在因换工作需要重新复习一下Java。以前一直想把自己在Java方面的学习心得写出来,现在终于算是有些时间了,那么开始吧。 这一篇讲对象(Object),另:本人现在刚辞职,如果你是西安高新区,且想招人的,可以发邮件给我caicaicaicaica@163.com,本人三年以上Java工作经验。养家糊口不容易...

weixin_30622107的博客 245

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 586

006——面向对象的程序设计

理解对象 属性类型:为实现JavaScript引擎,定义了部分特性的内部值,用两个方括号表示,如[[ Enumerable ]] 1、数据属性:一个数据值的位置,可否读写 [[ Configtable ]]:能否通过delete删除属性从而重新定义属性。一旦定义成不可配置,则不可逆 [[ Enumerable]]:能否通过for-in循环返回属性 [[ Writable ]]:能否修改属性的值 [[ Value ]]:包含...

Stephen-James 201

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

js006-面向对象的程序设计

js006-面向对象的程序设计 面向对象(Object-Oriented,OO)的语言有一个标志,那就是他们都有类的概念。而通过类可以创建多个具有相同属性和方法的对象。 ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。(对象是一组没有特定顺序的值)。对象每个方法或者属性都有一个特定的名字,每个名字都映射到一个特定的值。对象可以想象为一个散列表,一组名值对,其中...

weixin_30338743的博客 107

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

面向对象程序设计C#(3)——设计一个简单的商场收银台程序

程序运行后显示如图 3-21 所示的页面,在输入了商品编号和数量后单击“确定”按钮,在屏幕上将显示包含有“品名”“单价”“数量”和“小计”的购物详细清单。用户输入商品“编号”及“数量”值后,使用 switch 语句对商品“编号”进行判断,从而得到相应的商品名称和单价,根据“数量”计算出小计值并将结果显示到标签控件中。本次主要目的是通过设计一个简单的商场收银台程序,加深对面向对象编程的理解,掌握类与对象的设计、创建与使用方法,以及了解实际场景中程序设计的流程与技巧。1)若没有输入商品数量,则默认为1。

m0_74788296的博客 1094

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

day006

面向对象程序设计(Object Oriented Programming)—OOP 一个JAVA文件中可以创建多个class,但是被public修饰的类只能有一个 并且这个java文件的名字必须与此公共类的名字一致 可以把一类事物的属性与功能封装到一个类组件(类class的一种叫法)中 定义属性—成员变量(类里方法外) 封装属性/方法:在属性/方法前加private private修饰的为私有资源 被private修饰的资源只能在本类中使用 想设置值必须调用set方法,想取值必须调用get方法 规定了用户必

qq_41916663的博客 101

000-程序设计语言教程目录

本教程专为软件设计师(软考中级)考试中的"程序设计语言"科目设计,涵盖了从基础概念到高级应用的完整知识体系。教程内容紧密结合考试大纲,深入讲解各种程序语言的特点、编译原理、自动机理论等核心知识点,帮助学习者系统掌握程序设计语言的理论基础和实践应用。

wyl703的博客 719

C++面向对象程序设计 006:奇怪的类复制 ---- (北大Mooc)

原题题目 描述 程序填空,使其输出9 22 5 #include <iostream> using namespace std; class Sample { public: int v; // 在此处补充你的代码 }; void PrintAndDouble(Sample o) { cout << o.v; cout << endl; } int main() { Sample a(5); Sample b = a; PrintAndDouble(b);

Love 6's Private Blog 634

[HIT软件构造Blog006]Designing Specification

设计规约Functions & methods in programming languagesSpecification: Programming for communicationDesigning specifications Functions & methods in programming languages 参数类型是否匹配和返回值类型是否匹配都在静态类型检查阶段完成 “方法”是程序的“积木”,可以被独立开发、测试、复用使用“方法”的客户端,无需了解方法内部具体如何工作---

折腾 508

深入理解指针

那我们通过取地址操作符(&)拿到的地址是⼀个数值,⽐如:0x006FFD70,这个数值有时候也是需要 存储起来,⽅便后期再使⽤的,我们把这样的地址值存放在指针变量中。其中pap的类型是int*,这⾥pap左边写的是类型的对象, * 是在说明pa是指针变量,⽽前⾯的 int 是在说明pa指向的是整型(int)类型的对象。上述代码 根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀行的地址,是⼀ 维数组的地址。根据上⾯的例子,第⼀行的⼀维数组的类型就是 int [5]

2301_80211095的博客 1156

【LGame入门学堂006.精灵传说】我是定时器

【LG006.精灵传说】我是定时器   关键字:LGame 入门 定时器 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址:http://blog.youkuaiyun.com/musicvs/article/details/7530117     本章来聊聊精灵传说之我是定时器~ 木头惯例,先上图: 实现的效果就是一个精灵不断地在跑,不断地跑?你想累死

笨木头 4134

C++ 面向对象五大原则

一,面向对象五大原则 1.1,理解设计模式与设计原则 软件设计原则:原则为我们提供指南,它告诉我们什么是对的,什么是错的。它不会告诉我们如何解决问题。它仅仅给出一些准则,以便我们可以设计好的软件,避免不良的设计。 软件设计模式:模式是在软件开发过程中总结得出的一些可重用的解决方案,它能解决一些实际的问题。一些常见的模式,比如工厂模式、单例模式等等。 封装、继承、多态只...

个人技术博客 5794

程序设计算法(三)C++编程作业(1-10)

005.学生信息处理程序 #include <iostream> #include <string> #include <cstdio> #include <cstring> #include <sstream> #include <cstdlib> using name...

fightingfighting的博客 588

来自一枚菜鸟的Java学习总结——面向对象(构造方法、成员属性和成员方法)

1、Java面向对象 ​ 简单理解为OOA、OOD和OOP,即面向对象分析(Object-Oriented Analysis)、面向对象设计(Object-Oriented Design)、面向对象编程(Object Oriented Programming)。相信不难想到,要想完成OOP必须经历OOA和OOD;即通过分析用户需求从需求出发,提取抽象出Java中的类(class),通过开发者权衡协调各个类的关系进行设计,最后通过Java语言完成面向对象的程序设计(面向对象编程/OOP);(还有三大特

weixin_45698813的博客 365
上一篇: 002 Java编程语言运行机制
下一篇: 007 面向对象之封装
「已注销」
博客等级 码龄12年 7粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值