您的位置:首页 > 编程语言 > Java开发

Java基础针对自己薄弱环节总结03(面向对象封装、继承)

2015-08-03 13:24 537 查看

一、说说面向对象思想

1、什么是面向对象

1)面向对象是以对象为基础的,完成各种操作,强调的是对象、结果。

2)面向过程是以函数为基础的,完成各种操作,强调的是过程。

3)面向对象是基于面向过程的。

2、面向对象的思想特点

1)一种更符合人们思考习惯的思想

2)把复杂的问题简单化

3)我们从执行者变成了指挥者

举例:自己买电脑vs让朋友帮忙买电脑

(面向过程) (面向对象)

二、类与对象

1、类是相关属性和行为的集合,是抽象的概念

2、对象是某种事物的具体存在,是具体的表象形式

举例:学生 (类)

小明 (对象)

三、成员变量和局部变量的区别

1、定义位置

成员变量:类中方法外

局部变量:类中方法内,或方法上的形参

2、初始化区别

成员变量:有默认初始化值

局部变量:无

3、存储位置:

成员变量:堆中 随对象的存在而存在

局部变量:栈中 随方法的存在而存在

四、封装的概述

1、概念
隐藏对象的属性和实现细节,仅对外提供公共的访问方式(将属性私有化,并提供公有的访问方法)
2、注意


private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现

3、为什么要写getter/setter方法(掌握)

从思想上来说,因为属性私有化,只能在本类使用,其他类要想使用就需要提供get方法和set方法

从需求上来讲,set和get方法 不一定必须出现,他俩是相互独立的

而且set方法和get方法的名字可以随便起,只不过形成一个规范了,大家通过方法给私有属性赋值的时候,形成一个默认的规则,就是给属性赋值的方法以set开头,获取属性值的方法以get开头

五、实例变量 和类变量

类变量也叫静态变量,也就是在变量前加了static 的变量
实例变量也叫对象变量,即没加 static 的变量

区别在于:
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象


六、this关键字(掌握)

1、概念(理解或了解)

this代表其所在方法所属对象的引用,哪个对象调用方法,方法内部就有一个隐含的this代表这个对象(谁调用,this就代表谁)(重点)

简单点说:谁调用,this代表谁

2、应用场景(作用掌握)

用于解决局部变量隐藏成员变量的问题

简单点说:通过this关键字可以直接调用成员变量

七、代码块(掌握)

1、概述

由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}

2、代码块作用

局部代码块作用

让变量尽可能早的从内存中消失,提高效率

构造代码块作用是

把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用,最终目的初始化成员变量

工作中用的很少,主要应对面试

八、对象初始化过程(掌握)

Person p = new Person();

A:把 Person.class文件加载到内存 (类加载器 )

B:在栈内存开辟一个变量空间,给 p使用

C: new Person()就会在对内存中开辟空间

D:方法进方法区,有类名做标记,并且,同时成员变量进堆内存并给出了默认初始化值

E:对成员变量进行显示初始化 (是因为定义成员变量的时候给赋值了 public int age = 34;)

F:如果有构造代码块,可以在构造代码块中对成员变量赋值

G:构造函数初始化

H:到此为止,对象初始化完毕

I :把堆内存对象的首地址赋值给栈内存的 p变量

九、static关键字概述

1、概述

1)static 可以修饰成员变量和成员方法

2)被static修饰的成员有一个最大的特点,就是可以被该类下所有的对象共享

2、什么时候用

多个对象共享某一数据的时候,我们就把这个数据用static修饰.举例:小鸡吃食

3、特点(掌握)

1)被static修饰的内容随着类的加载而加载,优先于对象存在

2)可以直接通过类名调用

3)被该类下所有对象共享

4、注意事项

1)在静态方法中是没有this关键字,因为静态是随着类的加载而加载。而this是对象创建才存在的

2)静态方法只能访问静态成员变量和静态成员方法 一句话 静态只能访问静态

3)静态内容可以通过对象调用,也可以通过类名调用。推荐使用类名调用

十、继承

1、什么是继承

1)多个类中存在相同的属性和行为时,将这些内容抽取到单个类中,那么多个类无需再定义属性和行为,只需继承即可。

2)多个类成为子类或派生类,单个类称为父类或超类

3)通过extends关键字让他们产生关系

2、继承的好处及特点

好处:

1)提高代码的复用性

2)让类与类产生关系,是多态的前提

特点:

1)Java中只支持单继承,不支持多继承

2)Java中支持多层继承

3、什么时候使用继承

B类是A类的一种就用继承关系

十一、this和super的比较

1、概念上的区别

Super代表的是父类内存空间的标示

this代表所在方法所属对象的引用

2、什么时候使用

在调用父类构造方法时使用super

当子父类中出现同名成员时用super区分

十二、重写override和重载overload

1、重写override概念(掌握)

在子父类关系中,子类中存在和父类方法声明完全一样的方法叫做方法重写

2、重载overload概念

一个子类或者子父类关系中存在多个同名方法,并且参数列表不同的方法叫做重载

3、重写的作用

升级改造父类的方法

十三、子父类间成员方法注意事项(掌握)

1、父类中私有方法不能被覆盖 (因为私有的不能被继承,所以不算重写)

2、子类方法访问权限大于父类方法访问权限 (父类如果是public,子类只能是public)

十四、子父类间构造方法特点和注意事项(掌握)

1、子类中构造方法的特点(理解)

子类默认构造方法都访问了父类的无参构造方法,子类构造方法中都有默认语句super(),并且默认只能是无参的super()语句

因为子类会具备父类中非私有数据,这个初始化靠父类完成,所以先调用父类构造方法来初始化父类中的数据

2、如果父类无无参构造,子类构造如何访问父类构造(掌握)

1)通过super(参数)调用父类带参构造方法

2)通过this(..)调用本类构造方法 //知道就行,一般不用, 但是需要注意的是如果一个类中所有的构造方法第一句都调用this(..),这样是错误

3、构造方法执行完后会创建该类的对象吗?

不一定,子类的构造方法第一行调用父类的构造方法时,不会创建对象

4、注意

构造方法中的this()和super()语句必须放第一行,并且只能取其一

十五、子父类间静态代码块,代码块,构造方法执行顺序(掌握)

1、优先级

静态代码块 -> 构造代码块 ->构造方法

2、执行顺序

父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法

3、静态代码块作用

初始化静态成员变量

4、构造代码块作用

1、初始化非静态成员变量

2、把所有构造方法中的共性内容抽取出来,提高了代码的复用性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: