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

JavaSe基础XX05——面向对象

2014-08-06 15:06 225 查看
面向对象和面向过程,都是一种思想。

面向过程思想强调的是动作——函数,C语言。

C++是面向对象的。

面向对象强调的是对象,对象就是实体。



面向对象的好处:

1. 面向对象就是一种常见的思想,符合人们的思考习惯。

2. 面向对象的出现,将复杂的问题简单化。

3. 面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。



java中所有关键字都是小写的。

String不是关键字,是一个类。



事物里面的东西就是成员,定义类,就是定义成员,成员分为两类:成员变量(属性)、成员函数(行为)。

成员变量:它定义在类里面。

局部变量:只是在方法中有效,有局限性。

对象的内存体现

堆内存中存放的都是new出来的。

堆内存中的变量会有默认初始化,下面的num和color都是被默认为0和null



又一例:



再一例:



堆内存的东西都是实体,实体的作用就是封装数据,和数组的作用差不多,数组封装的数据是同一种类型的数据,而对象封装的是一个事物所具备的数据。

*成员变量和局部变量的区别:

1.成员变量定义在类中,整个类都可以访问;

局部变量,定义在函数,语句,局部代码块中,只在所属区域有效。

2.成员变量存放在堆内存对象中;

局部变量定义在栈内存方法中。

3.成员变量随着对象的创建而存在,随着对象的消失而消失;

局部变量随着所属区域的执行而有效,随着所属区域的结束而释放。

4.成员变量都有默认初始化值;

局部变量没有默认初始化值。



run() 方法执行的时候,会先进栈,这个时候如果在run函数里面有num值(在栈中生成的),就会打印该值,如果在栈中没有找到该值,这个时候就会到堆中去找,如果堆中没有找到,那就会报错了。

package testobject;

class Car {
int num = 4;// 显示初始化,加载过程比较复杂,后期再讲;
String color;

public void run() {
System.out.println(num + "..." + color);
}
}

public class TestObject {

public static void main(String[] args) {
// TODO Auto-generated method stub
Car c = new Car();
c.run();
}

}


*类类型参数



*匿名对象:没有名字的对象。

Car c = new Car();//有名字的对象

new Car();//匿名对象,一种简写格式

匿名对象的使用方法:

1. 当对象【方法】仅进行【一次】调用的时候,就可以简化成匿名对象。



所以用匿名对象,对成员变量的调用没什么意义,执行之后,就会变垃圾,对方法才有意义。

2. 匿名对象可以作为实际参数进行传递。



这个时候,new Car() 就不会成为垃圾了,因为下面有c在接收它。

*基本数据类型参数传递



上面两例的结果是什么?

分析:





*面向对象的第一个特点——封装



之所以年龄打印出来是-20, 是因为被其他程序创建并使用,这就造成了安全隐患。

解决这个问题:不让访问。

1. 可以使用一个关键词 private. private int age; //私有的东西只能在本类中有效,其他类中即使创建了对象,也不能访问。

对于成员变量:

直接对外开放,不安全。

完全封闭起来也不合适。

所以可以对外提供一个方法。



所以:



只要不对外使用的,我们都隐藏起来。就好比上次的



private:权限修饰符



java中最小的封装体就是函数。

类也是封装体。

框架也是封装体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: