类与对象

面向对象语言

  1. 封装

    将数据和对数据的操作封装在一起,通过抽象,从具体的实例中抽取共同的性质(属性和行为)形成一般的概念

  2. 继承:

    • 子类可以继承父类的属性和行为(即数据和数据上的操作)
    • 同时又可以增添子类独有的属性和行为
  3. 多态

    • 向操作传递不同的消息,让对象根据相应的消息来产生相应的行为 如:求面积
    • 同一个操作被不同类型的对象调用时产生不同的行为 如:不同动物的喊叫声

类声明

  • 如果类名是拉丁字母,首字母大写
  • 有多个单词复合时,每个单词的首字母大写 如:ChinaMade

类体

抽象的关键:抓住事物的属性和行为

属性通过变量来刻画,行为通过方法来实现

即方法操作属性形成一定算法来实现一个具体的的行为

类体的构成
  • 变量的声明:用来储存属性的值 (体现对象的属性)
  • 方法的定义:对类中声明的变量进行操作,即给出算法 (体现对象具有的具体行为)

成员变量

又名域变量

类型

Java中的任何一种数据类型

  • 基本类型:整型、浮点型、字符型、逻辑类型
  • 引用类型:数组、对象、接口

有效范围

在整个类中有效,与书写的先后顺序无关

建议:不分散书写,先属性后行为

编程风格

  1. 一行只声明一个变量,便于添加注释
  2. 变量名字除符合标识符规定之外,首单词首字母小写;多个单词组成,从第二个单词开始首字母大写
  3. 变量名要能见名知意,切忌将小写字母l和数字1相邻

方法

  1. 方法头

  2. 方法体

    其中声明的变量和方法的参数被称为局部变量

    和类的成员变量不同,局部变量只在方法内有效,且与声明位置有关

    方法的参数在整个方法内有效,方法的局部变量从声明它的位置之后开始有效

    局部变量声明在什么语句块中,就只在什么语句块内有效

  3. 区分成员变量和局部变量

    局部变量若与成员变量名字相同,那么成员变量被隐藏,该成员变量在该方法内暂时失效

    使用关键字this来使用被隐藏的成员变量

  4. 局部变量无默认值

    成员变量有默认值,但局部变量没有,使用局部变量之前必须指定一个值

需要注意的问题

对成员变量的操作只能在方法中,不能直接在类中进行

1
2
3
4
class A {
int a = 12; //合法,这是声明的同时指定初值
a = 12; //非法,赋值语句只能出现在方法体中
}

类的UML图

分类

类的、接口的、泛化关系、关联关系、依赖关系、实现关系的UML图

构成

  1. 名字层
  2. 变量层
  3. 方法层

构造方法和对象创建

构造方法

  • 可以有多个构造方法,但是参数的个数不同,或者参数个数相同但是参数列表中对应的某个参数的类型不同

  • 如果没有编写构造方法,系统会提供默认构造方法,其无参数且方法体无语句

  1. 如果类定义了一个或多个构造方法,那么Java不提供默认构造方法
  2. 构造方法没有返回类型