3.1声明类
类的定义如下:
class MyClass{
//filed,constructor,and
//method declarations
}
通常类声明中按顺序包含以下组件:
- 修饰符——public,private
- 类名——按照约定首字母大写
- 如果有超类,要在超类名称前添加extends关键字(注意,一个类只能继承一个超类)
3.1.1声明成员变量
变量有以下几种类型:
- 类中的成员变量,通常称为字段
- 方法或者代码块中的变量,通常称为局部变量
- 方法声明中的变量,通常称为参数
变量名的命名规则遵循如下约定:
- 类名的第一个字母应该大写
- 方法名的第一个单词为动词
3.1.2定义方法
(1)方法声明的典型定义如下:
修饰符 数据类型 数据名(参数){}
(2)方法声明更普遍的是一次包含六个组件:
- 修饰符
- 返回类型
- 方法名
- 圆括号内的参数列表
- 异常列表
- 花括号内的方法体
方法声明中的方法名和参数类型构成方法签名
(3)方法的命名方法:尽管方法名可以是任意合法的标识符,但也要遵循一定的约定。根据约定,方法名应该是一个动词,且其字母均为小写;或者由多个单词构成,其第一个单词必为全部小写的动词,后面所跟单词为形容词,名词以及方法的描述语言等,而且除第一个单词外,后面所跟单词首字母要大写
3.2对象
3.2.1创建对象
创建对象都有以下三部分组成:
- 声明:声明将变量名关联到对象类型上
- 实例化:new关键字是一个Java运算符,用于创建对象
- 初始化:new运算符后跟一个构造调用(用于初始化对象)
3.2.1.1声明引用变量
变量的声明为:
type name;
该语句告诉编译器可以使用name引用type类型的数据。如果声明的是主类型变量,则该声明会为该变量保留适量的内存空间,引用变量也可以单独声明。
简单声明引用变量并没有创建对象,若要创建对象,则需要使用new运算符,而且使用之前必须将对象赋值给之前声明的引用变量,否则,编译器将会报错。
3.2.1.2实例化类
new运算符实例化类时,会为新对象分配内存并返回该内存的引用,new运算符也会调用对象的构造器,new运算符需要一个后置的实参以调用构造器。构造器的名称是待初始化的类名,new运算符返回所创建对象的引用,并将该引用赋值给相应类型的变量。
3.3类的更多细节
3.3.1使用this关键字
this关键字是当前对象(方法或构造器被调用的对象)的引用,在实例方法或者构造器内部,可以使用this访问当前对象的所有成员
使用this关键字的主要原因是方法或构造器的形参会覆盖相应的字段
3.3.2控制对类成员的访问
访问级别修饰符决定其他类是否可以访问特定字段,调用特定方法。访问控制有两个级别:
- 顶级:public或者包级私有(无显示修饰符)
- 成员级:public,private,protected或者包级私有(无显示修饰符)
用public修饰符声明类时,该类对于其他任意类都可见。如果类没有修饰符(默认为包级私有),则只有同一个包内的类可见 (包是相关类的集合)
成员级则可以使用public修饰符或无修饰符(包级私有),两种修饰符的意义相同,因为他们都处于顶级类中。成员级还有另外两个访问修饰符:private和protected。private修饰符指定成员只能在类中内部访问,protected修饰符指定成员可以在包内部(与包级私有一样),也可以由该类在其他包内的子类访问
访问级别:
修饰符 | 类 | 包 | 子类 | 所有环境 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
无修饰符(包级私有) | Y | Y | N | N |
private | Y | N | N | N |
3.3.3类成员
当多个对象都创建自同一个类的时候,他们都有自己不同的实例变量副本,有时候需要有些变量对所有的对象都公开,这可以由static修饰符来实现。声明中有static修饰符的字段称为静态字段或者类变量,他们与类关联,而不与对象关联。类的每个实例都共享一个类变量,该类的变量存储在内存的固定位置,任何对象都能改变类变量的值
类变量可以直接由类名引用,也可以通过对象的引用来引用,但是一般不推荐这种,这样就不能体现该字段为静态字段。