类与对象

2.1 类和对象的定义与使用

类的定义:

Class 类名{

数据成员-静态属性

成员函数-动态行为

}

对象的定义:

类名  对象名

int a的含义差不多

 

类定义的“{}”就是类的“外壳”,提供了封装,private声明的成员外面是不能访问的,而public可以。

 

引用:一个储存了某个对象地址的变量,它储存的不是对象本身,而是对象的地址。

Point point=new Point();的含义是:首先实例化一个对象(new Point()),然后定义一个引用point指向这个实例。

point=point1

不是讲实例point赋值给point1,而只是改变了引用的关系,即point也指向了point1指向的实例


 2.2 构造函数和垃圾回收

为什么需要有构造函数?

构造函数是完成对象的初始化,这个当然可以定义一个成员方法予以实现。但是这个方法必须显式调用,否则就可能因未初始化出现错误。

我们希望这样的方法能够被自动调用,能被自动调用,那么它的名字一定是独一无二的,什么样的名字才是独一无二的呢?——以类名作为方法名。这就是构造函数。

构造函数,是在对象实例化时自动被系统调用,该函数名必须独一无二。对于一个类来说,就是将一个类名作为函数名。

构造函数不需要程序员去定义返回值,他是系统自动决定的,void也不行。

 

构造函数无法、也无需指定指定返回值,它是自动被调用的。

 

函数重载

多个函数使用同一个函数名,系统根据参数自动调用相应的函数。

函数重载解决了标识符统一的问题。

 

拷贝构造函数

用一个已经存在的本类的对象去复制新的对象

 

垃圾回收:所谓的“垃圾”是指之前系统分配的内存单元,但是现在没用了,

再具体的讲,就是没有引用指向它。对于“垃圾”来讲,程序员不需要自己去回收,而是系统提供的垃圾回收机制自动回收,当程序员觉得有必要时,也可以强制让系统回收。

2.3 访问权限控制和封装

方法的访问控制(四种访问权限):

 

封装的要领,是站在用户的角度去思考怎么去描述一个类,它应该有什么属性和行为,而不是去考虑如何实现。

2.4 静态

静态成员修饰的成员与一般的成员有何区别呢

一般的成员是每个对象有一份数据,而静态成员是属于类的,即所有对象所共享;

一般成员的访问方式对象名.成员名,而静态成员的访问方式:类名.成员名。

 

this是“这个”、“当前”的意思,每一个成员方法都隐含有一个参数(this)。

比如

public void print(){
    System.out.println("学号:"+sno);
    System.out.println("姓名:"+name);
    System.out.println("性别:"+(sex==MALE?"男":"女"));
    System.out.println("学历:"+(level==UNDERGRADUATION?"本科":"专科"));
}

中的


严格来讲应该写成

System.out.println("学号:"+sno);

System.out.println("学号:"+this.sno);

静态常量,静态成员变量,静态成员方法,静态代码块

静态方法没有this

静态方法只能访问静态成员

一般的成员都是通过构造函数去完成初始化(实例化对象时),而静态成员则是在加载类的时候(也就是实例化之前)初始化

2.5 内部类

内部类是指在一个类的内部定义的类

内部类可以自由访问外部类的所有成员

内部类可以作为成员类(在外部类中定义,和成员方法平行)和方法内部类(定义在外部类的成员方法里面)。

内部类的实例化:

Computer.Cpu cpu=new Computer().new Cpu();
System.out.println(cpu.getY());

当一个类离开另一个类而无法单独存在或者说没有意义的情况下,使用内部类是最合适的(如:CPU离开计算机类,单独存在就没有意义了)

 

面对对象设计

1)类的设计:考虑应该由哪些属性去描述这个类,这个类应该提供什么方法

2)方法(函数)设计:函数名、参数和返回值类型

如果需要返回多个结果,函数返回值如何设计

1)可以将多个返回结果融在一个结果中,用特定的值表示其中的一个结果。比如查找函数需要返回是否找到以及找到的话下标是多少两个结果。可以将这两个结果并在一个整型返回值中,用-1表示没找到,找到的话就返回下标。这样设计的理由是下标不可能为-1,所以-1可以表示特定的含义。

2)将多个返回值封装成一个类对象

3)可以考虑使用输出型参数,在Java中就只能使用引用类型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值