您的位置:首页 > 编程语言 > Java开发

Java基础3_1面向对象(2011 06 12)

2011-06-12 11:02 344 查看
Java基础3_1面向对象

一、面向对象和面向过程
1、举个例子来说明两者:
面向过程:例如创建一窗口,窗口和操作函数是谓语和宾语的关系。
面向对象:例如创建一窗口,窗口和操作函数是主语和谓语的关系。
二、面向对象的特征
(1)封装(encapsulation)
(2)继承(inheritance)
(3)多态(polymorphism)
三、类和对象
1、定义:类是对一类事物的描述,是抽象,概念上的定义。
对象是对实际存在的。该类的每个个体,称为实例。
属性用成员变量来描述。
例如:假如对象是汽车,那么累就是对汽车的设计图纸。
2、对象的产生 例如: Person p1 = new Person();
p11保存了堆内存中的首地址
3、对象的使用
创建新的对象后,使用“对象名”对象成员的格式来访问对象的属性和方法。例如p1.name(name在前面定义)
4、对象的生命周期
(1)离开p1的作用域,p1失效,person的对象成为垃圾。
(2)p1 =new person();p2 = new person();p1=null;
(3)p1=null;
5、对象的比较
“==”是比较两个变量的值是否相等;
Equals是比较两个变量的内容是否一致。
例如:两个String类型的变量----str1和str2比较(str1==str2),是比较它们的首地址,显然是不等的
注意:所有的对象都有一个equals()方法。
5、匿名对象的使用
(1)如果对一个对象只需要进行一次方法的调用的话,就可以使用匿名对象,例如:new person.shout();(shout()是一个方法)
(2)我们经常使用匿名对象作为实参传递给一个函数调用 例如:getSomeOne(new person);(getSomeOne()是一个方法)
6、set和get方法实现类得封装性
说明:一个类就是一个小模块,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干扰)弱耦合(提供给外部尽量少的方法调用)
set和get一般格式如下:
int age;
private void setAge(int x)
{
If(age<0)
return;
age=x;
}
public int getAge()
{
return age;
}

四、构造方法
1、条件:
(1)有与类相同的名称
(2)不含返回值(也不含void)
(3)它不能在方法中用return返回值
2、
(1)对象产生时,构造方法会被调用,构造方法可以用来对变量的初始化
(2)当没有定义构造方法时,编译器会默认为我们加上一个不带参数的构造方法
例如:class person
{
int age;
string name;
//假如我们没有定义构造方法的话,编译器会在这里为我们加上一个不带参数的构造方法//public person(){ } 当我们定义了构造方法,编译器就不会给我们加上构造方法了
}
3、当有多个构造方法时,它的调用是根据参数参数类列表来调用的。
六、this的使用
1、this,它在函数内部就是这个函数所属的对象的引用变量
2、一定要使用this关键字的情况
(1)类的成员变量名和对其赋值的成员方法的形参同名是必要的,需使用this来区分
例如:private String name;
public Person22(String name)
{
this.name=name;
}
(2)假如有一个容器类和一个部件类的某个方法中,要创建部件类的实例对象,二部件类的构造方法要接收代表其所在容器的参数就是用this传递
class Container
{
Component comp;
public void addConponent(Component comp)
{
comp = new Component(this) ;
}
}
class Component
{
Container c;
public Component(Container c)
{
this.c = c;
}
}
3、构造方法在产生对象时被java虚拟机自动调用的,我们可以在一个构造方法中其他重载的构造方法,用this(参数列表的形式)
七、垃圾回收的分析
1、java的垃圾回收类似于C++的析构方法
2、调用java的finalize()方法,对象变成垃圾时才调用。
3、System.gc();来进行垃圾回收
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: