JavaSe基础XX05——面向对象

面向对象和面向过程,都是一种思想。

面向过程思想强调的是动作——函数,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中最小的封装体就是函数。

类也是封装体。

框架也是封装体。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值