面向对象的思维

权限访问修饰符

这里讨论的范围有,类,同一个包,子类,不同包

对于public修饰的,那就以上四类都可以

对于protected修饰的,在不同包中不可访问

默认的也就是default修饰的,子类和其他包中不能访问

private修饰的,是权限最少的,只有同一个类中可以被访问,常用于封装,再提供setter和getter方法起到保护数据的作用

规律就是四个修饰符,四个权限范围,从大到小也就是从上到下,每次减少一个权限

什么是面向对象呢

把相关的数据和方法组织为一个整体来看待,让我们在看待程序的时候更加的贴近事物自然运行的模式

对于一个程序员而言,是思想从执行者到指挥者的变化

就一个问题而言,面象过程的解决办法是如何去解决,分哪些步骤去解决

面向对象的解决办法是,找谁去解决,那么就创建可以解决这个问题的对象,就交给这个对象了

EG:  要怎么吃饭?

对于这个场景,面向过程的解决办法是,想,首先去买菜,再烧水,放米,烧油。。。

而对于面象对象的就是,招一个保姆,保姆去解决

现在将这个问题放大,如果是一个土豪,每天除了要吃饭,还要修建,要浇水,要搞卫生。。。

这个时候,如果是面向过程的思维,就是要先这样,再这样。。。等等等等一大堆,举都举不完,栗子太多了

所以就显得不合理,就体现出了面向对象的思维的优势,我就招一个管家,让管家去处理,管家还能再招聘工人,保姆等等

面向对象的三大思想是

OOA : object oriented analysis ——面向对象分析

OOD : object oriented design——面向对象设计

OOP : object oriented programming——面向对象程序

面向对象的三大特征: 封装,继承,多态

类和对象的关系:

类就是共性的产物,是一个综合特征,对象是一个个性的产物,是从类中抽象出来的一个个具体的实例

比如有个汽车类,那就是一个综合的,四个轮子的,地上跑的,就是汽车,很大的一个概念,

对象就具体了,比如牌子叫宝马,型号是XXX,车牌照XXX,颜色XX等等

然后,类要通过对象才能进行使用,对象的所有操作都是在类中定义的

类是由属性和方法组成的,对象在使用的时候就是调用的这些个属性或者方法来具体化自身

对象创建过程中的内存的分析

创建的对象会被存储在栈内存空间中,而new过了的就会在堆内存中为其开放一块空间,有唯一的地址,栈中的对象根据该地址找到该空间

如果改变了类中定义的属性,那么就会在堆内存中相应的改变,

假设已经建立了 Book book = new Book();

现在用Book book2 = book;

也就是说现在book2指向的地址就是book1在堆内存中的地址

所以现在如果用book2对类的属性进行操作改变,是相对的堆中的地址进行了改变

而现在的book指向也还是堆中的那块地址,所以这不是一个简单的复制过程,内部的逻辑也需要理清楚

Java类中至少会有一个构造方法,也就是常说的构造器

如果没有明确的定义构造方法,系统会自动生成一个无参的构造方法(不推荐依赖此方法)

Java允许出现同名函数,这就是方法的重载

判断是否重载的方法:1.方法名是否相同    2.参数是否不同(具体体现在,类型和长度上)

对于静态修饰符Static

静态的数据会被存放在方法区中,在类被第一次加载的时候使用,可以看成是类的具体属性,而不是对象的具体属性

比如汽车店中,那么他有车,有这种那种车,那是具体的对象,对于车而言的,那么如果是卖出去了多少车,那么就是对于店而言的

用static修饰,可以通过类名.static修饰的方法或属性直接调用,

要注意

静态方法在被调用的时候,有可能还没有创建具体的对象,也就是说,没有创建对象,也可以直接通过类来调用修改static的值

但是,静态不能访问非静态,非静态可以访问静态

因为非静态可用,就说明对象已经创建,对象已经创建就说明类已经被加载,那么类呗加载就肯定能用静态的了

就像现在2020年你不能找2030年的人玩,他还没出生,但是到了2030年,他就能找你2020年的人来玩

关于代码块的问题

普通代码块,那就是普通大括号包起来的部分,写在方法里,没什么特殊的

构造代码块,写在类中,直接大括号包起来,在对象被创建的时候被调用,执行在构造方法之前

静态代码块,就是添加了static修饰符的代码块

staic{

}

这种代码块在类被加载的时候,就是第一次使用的时候而执行,因为类的加载只一次,所以这个代码块的执行也只一次

面试题:

执行顺序是?

静态——》构造代码块——》构造方法       很明显,在对象的创建之前,就需要把类加载到内存,所以静态代码块会先执行

猜你喜欢

转载自www.cnblogs.com/zzxisgod/p/13391209.html