一、面向对象的特征
-
Java支持面向对象的三大特征:
-
封装:Java提供了private ,protected和public三个访问控制修饰符来实现良好的封装;
-
继承:提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的Field和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法,这是实现一种复用的手段;
-
多态:继承实现复用时,子类对象可以直接复制给父类变量,这个变量具有多态性;
-
-
此继承之外,也可以通过组合来实现复用;
二、类
-
引用变量:我们把类当成一种自定义数据类型,可以使用类来定义变量,这种变量统称引用变量;
-
Java程序设计中有两个重要的概念:
-
类(Class):某一批对象的抽象,可以把类理解成某种概念;
-
对象(Object):对象才是一个具体存在的实体;
-
-
定义类语法:
[修饰符] class 类名{
零到多个构造器定义...
零到多个Field...
零到多个方法...
}
-
修饰符:可以是pubilc、final、abstract,或者完全省略;
-
类名:合法的标示符;
-
Field:定义该类或该类的实例所包含的状态数据;
-
方法:定义该类或该类的实例的行为特征;
-
构造器:用于构造该类的实例;
-
定义Field语法:
[修饰符] Field类型 Field名 [=默认值];
-
修饰符:可以省略,也可以使public、protected、private、static、final,其中public、protected、private三个最多只能出现其中之一,可以与static、final组合起来修饰Field;
-
Field类型:可以是Java设计语言的任何类型,包括基本类型和引用类型;
-
Field名:一个合法的标示符;
-
默认值:指定一个默认值;
-
定义方法的语法格式如下:
[修饰符] 方法返回值类型 方法名(形参列表){
//由零条到多条可执行语句组成的方法体
}
-
修饰符:修饰符可以省略,可以是public、private、static、final、abstract,其中public、protected、private最多只能出现其中一个;abstract和final最多只能出现其中之一;可以与static组合起来修饰;
-
返回值:可以是Java语言支持的任何类型;
-
方法名:命名与Field的命名相同;
-
形参列表:定义该方法可以接受的参数,多个参数之间使用逗号(,)隔开;
-
构造器是一个特殊的方法,定义语法和方法相似,语法格式如下:
[修饰符] 构造器名(形参列表){
//由零条到多条可执行语句组成的构造器执行体
}
-
修饰符:可以省略,可以使public、protected、private之一;
-
构造器名:必须和类名相同;
-
形参列表:和定义方法形参格式完全相同;
三、对象的产生和使用
-
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例;
-
类或实例访问方法或Field的语法:类.Field|方法,或者实例.Field|方法;
-
static修饰的方法和Field,即可通过类来调用,也可以同通过实例来调用;没有static修饰的普通方法和Field,只能通过实例调用;
四、对象、引用和指针
-
程序定义的Person类型的变量实际上是一个引用,它被放在栈内存中,指向实际的Person对象;真正的Person对象放在堆内存中;
-
实际上Java里面的引用就是C里地指针,只是Java语言把这个指针封装起来,避免开发者进行繁琐的指针操作;
-
堆内存中的对象可以有多个引用,即多个引用变量指向同一个对象;
-
如果堆内存里地对象没有任何变量指向该对象,那么程序将无法在访问该对象,这个对象也就变成了垃圾,Java的垃圾回收机制将回收该对象,释放该对象占用的内存;
-
如果希望通知垃圾回收机制回收某个对象,只需要切断该对象的所有引用变量和它之间的关联即可,也就是把这些应用变量赋值为null;
五、对象的this引用
-
Java提供了一个this关键字,this关键字总是指向调用该方法的对象。根据this关键字的位置的不同,this作为对象的默认应用有两种情形:
-
构造器中引用该构造器正在初始化的对象;
-
在方法中应用调用该方法的对象;
-
-
this可以代表任何对象,当this出现在某个方法体中,它代表的对象是不确定的,但它的类型时确定的,它代表的对象只能是当前类;只有当这个方法被调用时,它代表的对象才能被确定下来,谁在调用这个方法,this就代表谁;