本章要点
1:定义类、属性和方法
2:创建并使用对象
3:对象和引用
4:方法必须属于类或对象
5:Java里方法的参数传递机制
6:递归方法
7:方法的重载
8:实现良好的封装
9:使用package和import
10:构造器的作用和构造重载
11:继承的特点和用法
12:重写父类方法
13:super关键字的用法
14:继承和多态
15:向上转型和强制类型转换
16:继承和组合的关系
17:使用组合来实现复用
18:构造器的初始化块的作用和区别
19:静态初始化块
Java是面向对象的程序设计语言,Java语言提供了定义类、定义属性、方法等最基本的功能。类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象,对象由类负责创建。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,Java程序使用类的构造器来创建该类的对象。
Java也支持面向对象的三大特征:封装、继承和多态,Java提供了private、protected和public三个访问控制修饰符来实现良好的封装,提供了extends关键字来让子类继承父类,子类继承父类将可以继承到父类的属性和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段,除此之外,也可以通过组合关系来实现这种复用,从某种程度上来看,继承和组合具有相同功能。使用继承关系来实现复用的时候,则不具备这种灵活性。
构造器用于对类实例记性初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。除此之外,Java还提供了一种静态初始化块,静态初始化块用于初始化类,在类初始化阶段被执行。如果继承树里的某一个类需要被初始化时,系统将会同时初始化这颗继承树里的所有类。
5.1.3对象、引用和指针
如:Person p=new Person();
这行代码实际上产生了两个实体:一个是p变量,一个是Person对象。
类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,它指向实际的Person对象;而真正的Person对象则存放在堆内存中。如图显示了将Person对象赋给一个引用变量的示意图:
5.2.1方法的所属性
5.2.2方法的参数传递机制
public class TestPrimittiveTransfer
{
public static void swap(int a,int b)
{
//下面三行代码实现a b变量的值
//定义一个临时变量来保存a变量的值
int tmp=a;
//把b的值赋给a
a=b;
//把临时变量 tmp的值赋给a
b=tmp;
System.out.println("swap方法里,a的值是“+a+”:b的值是“+b);
}
public static void main(String[] args)
{
int a=6;
int b=9;
swap(a,b);
System.out.println("交换结束后,实参a的值是“+a+”:实参b的值是“+b);
}
}
swap方法里,a的值是9:b的值是6
交换结束后,实参a的值是6:实参b的值是9