模块2 面向对象编程初级 --- 第四章:创建类

news/2024/9/19 7:28:08/文章来源:https://www.cnblogs.com/kuangmeng/p/18314263

第四章 创建类

主要知识点:

  1、类的定义

  2、类的修饰

学习目标:

  掌握类的定义方法,能够编写简单的类。

4.1 类的定义

  问题空间元素方法空间中的表示称为对象,面向对象的程序设计是以解决的问题中所涉及到的各种对象为主要考虑因素,更加贴近于人的思维方式,面向对象程序设计允许用问题空间中的术语来描述问题。

4.1.1 定义类

  类是一个原型,用来对某种类型的对象定义变量和方法;实际上本质不是对象,只是某一类型对象的抽象表示,类的一个新的实例即对象,其关键字是class,声明类的格式如下:

修饰符 class 类名 [extends 父类名] [implements 接口名] {类型 成员属性名;......修饰符 类型 成员方法名(参数列表) {类型 局部变量名;方法体;......}
}

  注意事项:

  (1)类的定义与实现放在一起保存的,整个类必须保存在一个文件中。

  (2)如果类的修饰符是public,则表示此类是公共类,对象的文件名就是这个类名。

  (3)新类必须在已有类的基础上构造;

  (4)在已有类的基础上构造新类的过程称为派生,派生出的新类称为已有类的子类,已有类称为父类,子类继承父类的方法和属性;

  (5)当没有显示指出父类时,父类隐含为Object类,这是所有类共同的父类。

  (6)类的成员变量称为属性,类的成员方法称为函数。

  综上所述,通过继承提高了代码的重用率,子类可以使用父类的属性,子类与父类的层次关系更加明确;

  接下来是课堂练习:

    定义一个学院类college,成员属性包括学校名name、所在城市city、地址address、电话telephone、邮政编码postcode、成员方法包括招生enroll、教学teach、就业employ,然后以自己的学校为例,建立一个college类的实例。

4.1.2 修饰类

  类的修饰符用来说明类的特殊性质:访问控制修饰符、抽象类说明符、最终类说明符;

  1、访问控制修饰符:用于声明类的被访问权限;

  (1)public:公共类,说明是一个公共类,可以被其他任何类引用和调用;

  (2)不写访问控制符:表明类只能被本包的其他类访问;

  说明:同一源程序文件中,不能出现两个或两个以上的公共类(public),否则编译时,会将第二个公共类放到另一个文件中。

  2、抽象类说明符

  关键字:abstract,抽象类不能直接实例化一个对象,只能被继承;

  3、最终类说明符

  final 作为关键字,最终类不能被继承,不能在派生出其它子类。abstract和final不能同时修饰一个类,因为既是抽象类又是最终类的类是没有意义的;

4.2 成员属性

  成员属性就是变量,遵循先声明后使用的原则;

4.2.1 基本数据类型

   Java的数据类型分为两大类:基本数据类型、复合数据类型;其中数组是一个很特别的概念,它是对象而不是一个类,但是几乎可以当成类来使用,一般归到复合数据类型中。如下图所示:

      

   其中基本的数据类型可以用于变量,也可以用于常量。如下表所示:  

      

  1、布尔型

  boolean被称为逻辑型,只有两个取值:true表示逻辑真,false表示逻辑假;

  2、字符型

  字符型,用来表示字母,仅表示一个单一的字母,通常char型常量使用单引号括起来,以便和数字区别出来;

  3、整型

  在Java中,提供了4种整型数据类型:byte、short、int、long。其中整型可以用十进制(1 - 9)、十六进制(0x开头)、八进制(以数字0开头);另外十进制整数,要加一个L,放到最后;比如:2243L;

  4、浮点型

  在Java语言中,有两种浮点型:float、double。其中float是单精度浮点型,占用32位内存空间。double是双精度浮点型,占用64位内存空间。

4.2.2 类型转换

  运算时,不同类型的数据先转换成同一类型再参与运算。自动类型转换:位数少的类型转换为位数多的类型;当反向类型转换时,需要向用户明确说明,也就是强制类型转换;一般转换时,可能会截掉高位内容,导致精度下降或溢出;

4.2.3 成员属性的声明

  成员属性又称为成员变量,描述对象的状态,是类的静态属性;声明类的属性为简单变量的格式如下:

  [修饰符] 变量类型 变量名[ = 初值];

  其中,成员属性、局部变量、类、方法、接口都需要一定的名称,称为标识符,由用户给定,Java中对于标识符有一定的限制,命名规则如下:

  (1)标识符由四个组成部分:字母、数字、下划线(_)和美元符号($)

  (2)长度不限;

  (3)不能以数字为开头,也不能用Java内置的关键词;

  (4)汉字可以作为标识符,但是不建议使用

  成员变量的访问控制修饰符包括四种类型:

  (1)private :私有,只能在类的内部使用;

  (2)default :默认,本包内的其他类访问;

  (3)protected :被保护,default + 被声明他的类和派生的子类所访问;

  (4)public : 公共,成员可以被所有类访问;

  接下来,下一个知识点是 static声明的成员变量:

    用static声明的成员变量被视为类的成员变量,但是静态变量是类所固有的,可以被直接引用。其他成员变量只有声明之后,生成对象才能被引用。所以,有时候将静态变量称为类变量,非静态变量称为实例变量。静态方法称为类方法,非静态方法称为实例方法。

  下一个知识点是final声明的最终变量:

    用final声明的成员变量是最终变量,即常量,其值不可改变;声明类的属性为对象的格式如下:

    [修饰符] 类名 对象名 [ = new 类名(实际参数列表) ]

    例子:final float PAI = 32

  1、公共变量

  用public修饰的变量,允许任何类在外部直接访问,这就破坏了封装的原则,造成数据安全性能下降,所以除非特别的需要,否则不要直接使用这种方法。

  2、私有变量

  只允许本类的内部访问,任何外部类都不能访问它。为了让外部用户能够访问某些私有变量,通常在类的设计者会提供一些方法给外部调用,这些方法称为访问接口。私有变量很好地贯彻了封装原则,所有的私有变量都只能通过接口来访问。但是有两种情况,需要使用Java另外提供的两种访问类型:

  (1)通过接口访问私有变量,将降低程序的性能,在程序性能比较重要的情况下,安全性和效率间取得一个平衡。

  (2)私有变量无法被子类继承,当子类必须继承私有成员变量,需要使用其它的访问类型;

  3、保护变量

  4、默认访问变量

  如果和父类不在同一个包中,也不能继承默认变量(这是默认访问变量和保护变量的唯一区别);  

习题

一、简单题

  1、Java提供了哪些数据类型,全部写出来;

  2、如何进行数据类型的转换;

  3、类的修饰符有哪些?有什么区别;

  4、public的类和abstract的类有哪些区别;

  5、什么是最终类,如何声明最终类;

二、操作题

  1、创建一个学生类Student,包括学号no、姓名name、年龄age、性别sex四个属性以及学习study、实践practice两个方法;

  2、分别创建一个普通类、抽象类和最终类,类名均为Student;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/758779.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UOS系统部署KingbaseES V8R6 java故障“InvocationTargetException”

KingbaseES案例说明: 在UOS系统下部署KingbaseES V8R6数据库时,出现Java错误,部署失败。 系统版本: kingbase@srv01:~$ cat /etc/os-release PRETTY_NAME="UnionTech OS Server 20 " NAME="UnionTech OS Server 20 " VERSION_ID="20" VERSIO…

卷积神经网络CNN实战:MINST手写数字识别——数据集下载与网络训练

数据集下载 这一部分比较简单,就不过多赘述了,把代码粘贴到自己的项目文件里,运行一下就可以下载了。 from torchvision import datasets, transforms# 定义数据转换,将数据转换为张量并进行标准化 transform = transforms.Compose([transforms.ToTensor(), # 转换为张量t…

winform--穿梭框

新建一个用户控件: 直接上代码:/** 作者:pengyan zhang* 邮箱:3073507793@qq.com* 博客:https://www.cnblogs.com/zpy1993-09* 时间:2024-04-10 16:36*/public partial class ShuttleFrameControl : UserControl{private Color lb_BackColor { get; set; } = Color.Trans…

mpc

https://blog.csdn.net/apr15/article/details/133965768在“数据安全概述”里面, 我们提到了安全多方计算SMPC(Secure multi-party computation)的技术。在这个计算里面代表是密码分享SS (secret sharing)技术。 而开启整个算法世界的其实是华人科学家姚期智教授, 他提出…

一般网站制作流程

制作需要经过以下几个流程:设计页面效果图,一般为PSD或者PNG格式的原图; 将页面效果图输出为HTML格式,后缀名为“.htm”; 根据页面内容调用需求生成或者编写标签所需代码; 嵌套标签代码到输出页面对应位置; 测试调试模板文件,保证调用和设计效果一致; 将模板标签、文件…

帝国CMS的网站“Notice: Use of undefined constant”错误说明

“Notice: Use of undefined constant”错误说明解答:php.ini配置问题,按下面修改即可解决: 修改php.ini,把error_reporting = E_ALL改成 error_reporting = E_ALL & ~E_NOTICE扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精…

DASCTF 2023六月挑战赛|二进制专项 PWN (上)

DASCTF 2023六月挑战赛|二进制专项 PWN (上) 1.easynote edit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbin attack,把__malloc_hook,写入one_gadget 2.通过unlink修改free got表为system exp: from pwn import * co…

易优cms后台数据类型的开关功能如何默认都显示“开”

新建字段默认就是true,就是扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。专…

eyoucms获取当前栏目分类的下级栏目的文档列表

[基础用法] 标签:modelsartlist (channelartlist)备注:使用channelartlist也可以正常输出描述:获取当前栏目分类的下级栏目的文档列表 用法: {eyou:modelsartlist typeid=栏目ID type=son loop=20} <a href={eyou:field name=typeurl /}>{eyou:field name=typename…

帝国CMS忘记后台登陆认证码怎么处理

忘记后台登陆认证码怎么办?查看/e/class/config.php文件里的“$do_loginauth”变量内容。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、…

dedecms织梦更新生成栏目没反应问题总汇

织梦dedecms栏目无法更新是最头疼的事情,因为导致dedecms栏目不能更新的因素有很多,至 于大家都是什么原因导致的我也无法确定,因此整理了笔者所知道的一些原因,希望对大家有所帮助, 下面大家跟我一起来看下,你遇到的dede更新栏目无效是下面的哪一种情况:方法/步骤第一种…

易优cms登陆后台,总是提示验证码错误,账户密码都对!

问题: 易优cms登陆后台,总是提示验证码错误,账户密码都对!解决办法: 检查下目录权限,或者用排除法,弄回本地安装看看,如果可以,就是空间环境哪里设置有问题。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、H…