Java面向对象

面向过程与面向对象都是我们编程中,编写程序的一种思维方式。 l 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。例如:公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了。l 面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。例如,公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如小明擦玻璃、让小丽扫地、让小郭拖地、让小强倒垃圾等”,这里的“小明、小丽、小郭、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把公司卫生打扫干净了。

面向对象思维方式的好处
通过生活中的真实场景使用面向对象分析完之后,我们开始分析面向过程和面向对象的差异做出总结:l 面向对象思维方式是一种更符合人们思考习惯的思想l 面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。面向对象思维方式将复杂的问题简单化。

第2章 类与对象
对象在需求中的使用
对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。我们把大象装冰箱为例进行分析。在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里对象:
大象、冰箱分三步:
1、打开冰箱门
2、将大象装进去
3、关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。
即冰箱对象具备如下功能:冰箱打开冰箱存储冰箱关闭用伪代码描述,上述需求中有两个具体的事物 大象 和 冰箱
描述大象:class 大象
{
}
描述冰箱 class冰箱{
void 打开(){}
void 存储(大象){}
void 关闭(){}}
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象:
1.创建冰箱的对象

冰箱 bx = new 冰箱();  
	2.调用冰箱的功能:
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();

l 定义类的格式

public class 类名 {	
//可编写0至n个属性    
数据类型 变量名1;    
数据类型 变量名2;		
//可编写0至n个方法	
修饰符 返回值类型 方法名(参数)
{		执行语句;
	}
}

例如:

	public class Car {	
	String color;	
	int number; 	
	void run() {		
	System.out.println(color + ":" + number);	}}

局部变量和成员变量区别
区别一:定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量

区别二:在内存中的位置不同
成员变量存储在对内存的对象中
局部变量存储在栈内存的方法中

区别三:声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

** 封装**
l 封装表现:
1、方法就是一个最基本封装体。
2、类其实也是一个封装体。l
从以上两点得出结论,
封装的好处:l 1、提高了代码的复用性。
l 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。l 3、提高了安全性。

封装举例
机箱:一台电脑,它是由CPU、主板、显卡、内存、硬盘、电源等部件组成,其实我们将这些部件组装在一起就可以使用电脑了,但是发现这些部件都散落在外面,很容造成不安全因素,于是,使用机箱壳子,把这些部件都装在里面,并在机箱壳上留下一些插口等,若不留插口,大家想想会是什么情况。总结:机箱其实就是隐藏了办卡设备的细节,对外提供了插口以及开关等访问内部细节的方式。

** 私有private**

class Person {
	int age;	
	String name; 	
	public void show() {		
	System.out.println("age=" + age + ",name" + name);	
	}
} 
	public class PersonDemo {	
	public static void main(String[] args) {
			
	// 创建Person对象		
	Person p = new Person();		
	p.age = -20; // 给Person对象赋值		
	p.name = "人妖";		
	p.show(); // 调用Person的show方法	}}

一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。

class Person {	
// 私有成员变量	
	private int age;	
	private String name; 	

// 对外提供设置成员变量的方法	
	public void setAge(int a) {
	// 由于是设置成员变量的值,这里可以加入数据的验证		
		if (a < 0 || a > 130) {
		System.out.println(a + "不符合年龄的数据围"
		return;		
		}		
		age = a;
	} 	
	// 对外提供访问成员变量的方法	
	public void getAge() {
		return age;	
		}
	}

l 总结:类中不需要对外提供的内容都私有化,包括属性和方法。
以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。l 注意:私有仅仅是封装的体现形式而已。

** this关键字**
成员变量和局部变量同名问题当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢?
可以在成员变量名前面加上this.来区别成员变量和局部变量

class Person {	
	private int age;
	private String name;	

	public void speak() {
			this.name = "小强";		
			this.age = 18;		
			System.out.println("name=" + this.name + ",age=" + this.age);
				}
			} 
class PersonDemo {
	public static void main(String[] args) {		
	Person p = new Person();		
	p.speak();	
	}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值