**面向对象杂记**
面向对象:使用对象映射现实中的事物,使用对象的关系来描述事物之间的联系。
面向对象与面向过程的区别:
面向过程:分析出解决问题所需要的步骤,然后用函数一一实现,使用的时候依次调用就可以了。
面向对象:一个应用程序会包含多个对象,只需要修改的相互配合即可实现应用程序所需的功能
,这样当应用程序的功能发生变动时,只需要修改个别的对象就可以。
1.面向对象的三大特征
1.1封装
含义:将对象的属性和行为封装起来,不要让外界知道具体实现细节。(只需要做就行,不需要知道内部运行机制)
实现:定义一个类的时候,将类中的属性私有化,即使用private关键字来修饰,私有属性只能在它所在的类中被访问,如果外界想要访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx()方法和设置属性值的setXxx()方法。
就是平常写在pojo包中中设置属性的类,采用的就是封装的特征。
1.1.2重载
定义的方法名相同,但是参数类型或个数不同的方法
例如:
add()
add(int a)
add(double a,double b)
1.1.3构造方法
1、方法名与类名相同
2、在方法名的前面没有返回值类型的声明
3、在方法中不能使用return语句返回一个值,但可以单独写return语句来作为方法的结束
1.1.4this关键字
含义:使用this来指代当前对象,用于在方法中访问对象的其他成员
1、能很好的解决与局部变量名冲突问题。
2、通过this可以调用成员变量和构造方法
this.age是成员变量=age(局部变量中的age
)
1.2继承
继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关联体系。
在JAVA中,类的继承是指一个现有类的基础上构建一个新的类,构建出来的新类就被称为子类,现有类被称为父类或基类,子类会自动调用父类所拥有可继承的属性和方法。
1.3多态
含义:指的是在一个类中定义的属性和功能被其他类继承后,把当子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性。
(多态是指不同类的对象调用同一个方法时所呈现出的多种不同行为。)
优势:消除耦合关系,提高程序的扩展性和可为维护性。
(1)JAVA的多态性由类的继承、方法的重写以及父类引用指向子类对象体现的
(2)父类不能调用子类特有的方法,否则会报错
(3)将父类的对象强转为子类对像
例如 父类是animal 子类是cat
Animal an1=new Cat();(向上转换类型,向小转大)
Cat cat=(Cat)an1;(实现了向下转换类型,大的转小的)
(4)子类间,不能进行类型的转换
instanceof 判断一个对象是否为某个类(或接口)的实例或子类的实例
对象(或对象引用变量)instanceof 类(或接口)
2.类和对象
类:对某一事物描述
对象:表示现实中该类事物的个体
例如:人(类),小韩,小李(对象)
动物(类),猫,狗(对象)
3.成员变量和成员方法
成员变量:描述对象的特征,例如(姓名,年龄)
注意:定义在类中为成员变量,定义在方法中为局部变量
成员方法:描述对象的行为(说话,叫)
4.创建对象与使用
含义:使用new关键字来创建对象
类名 对象名称(引用变量)=new 类名();
new 类名():用于创建一个类的一个实例对象,=表明将一个类对象的内存中的地址赋值给变量(对象名称)
创建类的对象时,程序会占用两块内存区域,分别是栈内存和堆内存,对象名称被放进栈内存中,是一个引用对象,会指向真正的对象,new 类名()创建的对象则放进堆内存中,这才是真正的对象。
注意:
栈内存:存放基本类型的变量和对象的引用变量
堆内存:存放new 创建的对象和数组。
创建类的对象后,可以使用引用来访问对象所有的成员。
如创建对象后,使用引用对象赋值为零,则所引用的类的对象就会失去引用,成为垃圾对象
5.访问控制符
private,default,protected ,public访问级别由小变大。
default:最大访问范围到同一个包中
protected:最大到子类中
6.static关键字
静态变量:用来描述事物的特征和行为,并没有产生具体的数据。