首页 > 编程语言 >模块2 面向对象编程初级 --- 第四章:创建类

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

时间:2024-07-22 15:52:26浏览次数:18  
标签:变量 成员 修饰符 数据类型 --- 访问 面向对象编程 父类 第四章

第四章 创建类

主要知识点:

  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;

标签:变量,成员,修饰符,数据类型,---,访问,面向对象编程,父类,第四章
From: https://www.cnblogs.com/kuangmeng/p/18314263

相关文章

  • iOS面试题-load 和 initlize的区别
    +load和+initialize是两个与类的加载和初始化相关的特殊方法。它们在类的生命周期中的作用和调用时机有明显的区别。+load方法调用时机:+load在类初始加载进内存时调用,这通常发生在程序启动的时候,所有类和分类(Category)的+load方法在应用程序的生命周期中只会被调用一次。调用......
  • Python - Adob​​e InDesign Javascript 脚本帮助从 Python 调用 JSX
    提前致谢。希望每个人都表现出色。我试图从python调用Adob​​eIndesignJSX文件,下面是示例代码:我想在Adob​​eINdesign2024或更高版本上运行它。我在PythonInDesign脚本编写上看到了一些示例:从预检中获取溢出文本框以自动调整大小作为参考,可能适用于Ado......
  • 编辑距离与滚动数组优化 - 二维动态规划模板
    题目:编辑距离。思路显然,定义\(f[i][j]\)表示字符串\(a\)中前\(i\)个字符到字符串\(b\)中前\(j\)个字符的编辑距离。那么对于\(a_i=b_j\)时,我们对当前位无需进行任何编辑操作,则\(f[i][j]=f[i-1][j-1]\)。如果\(a_i\neb_j\),那么我们就要对当前位进行编辑:......
  • winform--穿梭框
    新建一个用户控件: 直接上代码:/**作者:pengyanzhang*邮箱:[email protected]*博客:https://www.cnblogs.com/zpy1993-09*时间:2024-04-1016:36*/publicpartialclassShuttleFrameControl:UserControl{privateCol......
  • AP9235B dc-dc升压恒流电源驱动IC 2.8-30V 输出电流2A SOT23-6 白光LED驱动方案
    概述 AP9235B系列是一款固定振荡频率、恒流输出的升压型DC/DC转换器,非常适合于移动电话、PDA、数码相机等电子产品的背光驱动。输出电压可达30V,3.2V输入电压可以驱动六个串联LED,2.5V输入电压可以驱动两路并联LED(每路串联三个LED)。通过改变CE脚上PWM信号的占空比可以控制LED的......
  • winform--分页控件
    新建一个用户组件,直接上代码:/**作者:pengyanzhang*邮箱:[email protected]*博客:https://www.cnblogs.com/zpy1993-09*时间:2024-04-1218:36*/publicpartialclassCPPageComponent:FlowLayoutPanel{#region事件......
  • 联想电脑收不到WiFi(Wireless-AC 3160 无法找到wifi6)
    可能出现该故障的设备:ThinkPadE450,E550,E450c,E550c ThinkPadE450,E550,E450c,E550c,在有的场景手机能收到的WiFi笔记本搜不到,这个收不到的WiFi他的版本是802.11ac/802.11axWiFi,如果路由器没有开启2.4G及向下兼容功能的话就会出现搜不到WiFi的故障现象。故障原因:......
  • k8s-deployment:应用生命周期管理流程
    deployment:应用生命周期管理流程 应用程序->部署->升级->回滚->删除1部署deployment###kubectlapply-fweb1-deployp.yaml kubectlcreatedeploymentweb--image=nginx:1.16--replicas=3#web1-deploy.yaml ......
  • DH协议-迪菲-赫尔曼密钥交换协议
    DH算法即Diffie–Hellmankeyexchange-迪菲-赫尔曼密钥交换协议,是一种密钥交换的方法。主要用于TLS握手中安全的交换对称加密密钥。根据不同的算法,DH协议可以分为基于离散对数算法StaticDH:静态DH协议(服务端私钥固定)DHE:临时私钥DH协议(服务端私钥随机)基于ECC椭圆曲线......
  • winform--下拉菜单
    新建一个用户控件: 直接上代码:/**作者:pengyanzhang*邮箱:[email protected]*博客:https://www.cnblogs.com/zpy1993-09*时间:2024-04-1220:03*/publicpartialclassUCDropControl:UserControl{#region事件......