新晋Java小白进化史之面向对象(封装和继承)_Object
一转眼已经转行学习Java这么久了,就用这个来记录一下自己的成长史吧。
就从面向对象开始说起吧:
一、什么是面向对象
1.面向过程
面向过程强调的是过程。也就是完成功能的每一个步骤都需要自己来实现!
2.面向对象
面向对象强调的是对象。由对象帮我们去完成功能!
3.面向对象的好处
A:将复杂的事情简单化
B:更符合人们思想习惯的思想(懒人思想)
C:将程序员由执行者变成了指挥者
4.面向对象三大特征
A:封装性
B:继承性
C:多态性(现在还是很迷的一大特征emmmm)
二、类和对象
1.什么是类
指的是某一类事物的集合。比较广泛的抽闲概念。例如:
手机类、人类、动物类、水果类~~~
2.什么是对象
指的是某一类事物中的具体体现。例如:
手机类:苹果手机、华为手机、小米手机~~
人类:张三、李四、王五~~~
3.类和对象的关系
可以将类看成是一个图纸,根据图纸创建出来很多个对象!(就是传闻中的new一个对象)
可以使用类来创建出不同的对象!
4.类中包含两个组成部分
属性(成员变量):指的是事物的一些描述信息。例如:学生类:姓名、年龄、性别、身高、体重~~~
行为(成员方法):指的是事物可以做什么事情。例如:学生类:吃饭、睡觉、学习、玩游戏~~~
三、定义一个类和使用类
1.如何定义类?
分析一个类中具备哪些属性和行为!
2.如何使用类?四、成员变量和局部变量的区别
1.定义位置:
成员变量:在类中方法外
局部变量:在方法内部或方法声明上
2.在内存中的位置:
成员变量:在堆内存
局部变量:在栈内存
3.默认初始化值:
成员变量:有默认初始化值
局部变量:没有初始化值,使用之前必须赋值
4.生命周期:
成员变量:随着对象的创建而创建,随着对象的消失而消失
局部变量:随着方法的调用而创建,随着方法的消失而消失
五、封装
1.什么是封装?
将不想对外暴露的实现细节隐藏!
2.封装的体现
A:生活中体现:插排。将零线和火线给隐藏起来。
B:程序中体现:类、方法
3.private 关键字
将成员进行私有 (老师说以后做项目都要写private关键字)
4.如果将一个成员私有,还想被外界访问得到,可以提供一套get和set方法
5.this 关键字
可以区分成员变量和布局变量重名的问题
代表当前对象的引用,谁调用的方法this就代表谁
A:创建对象:类名 对象名 = new 类名();
B:使用成员:
使用成员变量:对象名.成员变量名;
使用成员方法:对象名.成员方法名();
六、构造方法
1.什么是构造方法?
构造方法是用来创建对象使用的。
2.定义格式
修饰符 方法名(){}
3.注意事项
构造方法的方法名要和类名保持完全一致
构造方法没有返回值类型,连void也不能写
如果一个类中没有写任何构造方法,则系统会提供一个默认的空参构造方法,以供我们使用
如果我们写了任意一个构造方法,则系统不再提供默认的构造方法了
七、
-
java只支持单继承。不能多继承,但是可以多层继承
-
继承的好处
-
提高代码的复用性
-
提高代码的维护性
-
-
继承的弊端
-
耦合性(类与类之间的关系太过紧密)太强
-
-
直接访问
-
如果子类中有,优先用子类的。
-
如果子类中没有,向上查找父类中有没有。如果父类中有则使用父类的。如果父类中也没有则报错
-
-
成员方法间接访问
-
如果是调用子类的成员方法,优先使用子类的
-
如果是调用父类的成员方法,优先使用父类的
-
-
子父类变量重名如何区分访问
-
直接使用,默认使用的是子类的局部变量。
-
如果想使用子类成员变量,this.成员变量名。
-
如果想使用父类成员变量,super.成员变量名
-
浙公网安备 33010602011771号