黑马程序员-day05-面向对象(基本概念)

------- android培训java培训、期待与您交流! ----------

面向对象概念
1.面向对象是相对面向过程而言,面向对象和面向过程都是一种思想
2.面向过程:强调的是功能行为
3.面向对象:将功能封装进对象,强调具备了功能的对象。
4.面向对象是基于面向过程的。

面向对象和面向过程图例:


面向对象的特点
1.面向对象是一种符合人们思考习惯的思想
2.可以将复杂的事情简单化
3.将程序员从执行者转换成了指挥者
完成需求时: 
1.先要去找具有所需的功能的对象来用。
2.如果该对象不存在,那么创建一个具有所需功能的对象。
好处:这样简化开发并提高复用。

面向对象开发、设计和特征
1.开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
2.设计的过程:其实就是在管理和维护对象之间的关系。
3.面向对象的特征:
  封装(encapsulation)
  继承(inheritance)
  多态(polymorphism)


类与对象的关系
1.类和对象的定义:
  类:就是对现实生活中事物的描述。
  对象:就是这类事物,实实在在存在的个体。
2.类与对象的关系
现实生活中的对象:张三 李四。
想要描述:提取对象中共性内容。对具体的抽象。
描述时:这些对象的共性有:姓名,年龄,性别,学习java功能。
映射到java中,描述就是class定义的类。具体对象就是对应java在堆内存中用new建立实体。

类与对象(图例)

理解:
  类就是图纸
  汽车就是堆内存中的对象

类与对象实例
/**
 * 需求:
 * 1.描述汽车(颜色,轮胎数)。描述事物其实就是在描述事物的属性和行为。
 * 2.将已有车的颜色改成蓝色。指挥该对象做使用。在java指挥方式是:对象.对象成员。
 * 3.汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。
 * 
 * 思路:
 * 1.创建一个Car类,定义颜色color属性和轮胎数num属性及run方法
 * 2.在CarDemo类中创建一个Car类对象c,通过调用对象c的属性color把车的颜色改成蓝色。
 * 
 * 步骤:
 */
//汽车类
class Car{
	String color = "red";//属性对应的就是类里面的成员变量
	int num = 4;
	
	//运行方法,行为对应的就是类里面的函数(成员方法)
	public void run(){
		System.out.println("color:" + color + ",num:" + num);
	}
	
}

//测试类
public class CarDemo {
	public static void main(String[] args) {
		//创建一个Car类对象c
		Car c = new Car();//c就是一个类类型变量。记住类类型变量指向对象。
		c.run();
		
		//需求:通过调用对象c的属性color把车的颜色改成蓝色
		c.color = "blue";
		c.run();
		
		Car c1 = new Car();
		c1.run();
		c1.num = 4;
		new Car().color="green";//匿名对象,不过调用匿名对象的属性没有意义。
		new Car().run();
		//匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
		//如果对一个对象进行多个成员调用,必须给这个对象起个名字。
		//匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。
		remodel(new Car());
		/*
		Car c1 = new Car();
		remodel(c1);
		*/	
	}
	
	//需求:汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。
	public static void remodel(Car c){
		c.color = "black";
		c.num = 3;
		c.run();
	}
}


分析:
1.属性:轮胎数。颜色。
2.行为: 运行。
定义类其实就是在定义类中的成员。
成员:成员变量<-->属性,成员函数<-->行为。
属性对应是类中变量,行为对应的类中函数或方法。
其实定义类,就是在描述事物,就是在定义属性和方法,属性和行为共同成为类中的成员(成员变量和成员方法)。
注意:类中不必有主函数,不必保证独立运行,只有保证有一个主函数入口调用类就行。

成员变量和局部变量的区别?
1.定义的位置
  成员变量定义在类中,在整个类中都可以被访问。
  局部变量只定义在局部范围内,如:函数内,语句内等。
2.作用范围。
  成员变量作用于整个类中。
  局部变量变量作用于函数中,或者语句中。
3.在内存中的位置。
  成员变量存在于堆内存的对象中。
  局部变量存在于栈内存的方法中。 
4.消失的时间。
  成员变量随着对象的创建而存在,随着对象的消失而消失。
  局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。 
5.默认初始化值
  成员变量都有默认初始化值。
  局部变量没有默认初始化值。

匿名对象
1.没有名字的对象,匿名对象是对象的简化形式
2.匿名对象两种使用情况
  (1)当对对象方法仅进行一次调用的时
  (2)匿名对象可以作为实际参数进行传递
注意:调用匿名对象的属性是没有意义。


面试题:你怎么理解面向对象?
1.它符合现在人们思考的一种习惯
2.它让我们复杂的事情简单化
3.让我们从曾经的执行都变为现在的指挥者
其实面试官你本身就在用面向对象的方式思考问题因为以面试官您的能力而言,来了一个软件项目的话,您从需求分析到设计到开发到测试,都能完成,但是这样特别耗时间,所以您为了提高效率,您就需要去找一些具备专业编程经验的人来完成这些项目,我正好就是那个具备专业编程经验的对象,您只要指挥我这个对象做事情就可以了,我会给您一个非常满意的结果,至于过程您不用管。所以面试官您就在用面向对象的方式思考问题,来提高公司的效率,而我就是具备专业编程经验的人。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值