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

第四章 创建类

主要知识点:

  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;

posted @ 2024-07-22 15:47  我太想努力了  阅读(309)  评论(0)    收藏  举报