1,什么是面向对象,面向对象和面向过程的区别
面向对象和面向过程指的都是编程思想,其中面向对象是基于面向过程的一种编程思想。面向过程强调的是执行,所以面向过程的程序多是由一个个函数组成的,面向对象强调的是指挥,所以面向对象编程语言的基本组成单位是类。,类的实体即为对象,所有的动作被封装到类中。
举例说明:
eg1:人开门 面向过程为:open(门) 面向对象为:门.open()。 这里需要了解,人开门中这个开的动作属于门,面向过程强调的是开门,面向对象强调的是门开。
eg2:看电影需要选坐、买票、进场、落座四步。
面向过程为:选坐()、买票()、进场()、落座();
面向对象为:人.选坐()、人.买票()、人.进场()、人.落座();
若用面向过程的思想解决看电影这个问题,需要找到上述四个函数,分别传参,进行计算。
若用面向对象的思维解决看电影这个问题,只需找到人这个类,并为他创建实例,即可。
2,成员变量和局部变量
作用域不同:成员变量作用于整个类中,局部变量作用于函数中,或者语句中。
存储不同:成员变量在堆内存中,且有初始化值0,因为对象的存在才在内存中存在,局部变量在栈内存中。
3,匿名对象
Car c = new Car();
c.color = 5;此时c为有名对象;
new Car().color = 4;为匿名对象
new Car().num = 5;
new Car().color = "red"
new Car().run();
上述三个语句其实是创建了三个对象 调用方法匿名对象有意义,调用属性匿名对象没意义。
匿名对象使用方式1:当对对象的方法只调用一次时,可以用匿名对象俩完成,这样写比较简化。但如果要对一个对象的多个成员进行调用,则必须给对象命名。
匿名对象的使用方式2:可以将匿名对象作为实际参数进行传递。
4,封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离、便于使用、提高重用性、提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方式对其访问。
之所以对外提供访问方式,就因为可以在访问方式中,加入逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性。
private:私有,权限修饰符,用于修饰类中的成员(成员变量,成员函数),私有只在本类中有效
私有仅仅是封装的一种表现形式,只要权限在访问不到的范围内,都是封装的。
因此在一个类中,一般将属性定义为private,然后为属性设置get set方法。这就是一种形式的封装。