面向对象

1. 概念
面向对象是一种思想,相对于面向过程注重行为功能,面向对象把对象作为主体,通过调用对象的方法来完成相应的功能。在面向对象的世界里,万物皆对象,而对象就有相应的属性和功能,我们通过对这个世界事物的抽取,归纳,总结,能够更加高效的处理不同的事物。
2. 特点
是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。
完成需求时:
1. 先要去找具有所需功能的对象来用。
2. 如果该对象不存在,那么创建一个具有所需功能的对象。
这样可以简化开发并提高复用。
他有如下特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
3. 类与对象的关系
生活中描述事物无非就是描述事物的属性和行为。如:人有身高,体重等属性,有说话,打球等行为。
Java中用类class来描述事物也是如此。
属性:对应类中的成员变量。
行为:对应类中的成员函数。
定义类其实在定义类中的成员(成员变量和成员函数)。
成员变量和局部变量的区别?

成员变量:
1. 成员变量定义在类中,在整个类中都可以被访问。
2. 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
3. 成员变量有默认初始化值。

局部变量:
1. 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
2. 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
3. 局部变量没有默认初始化值。

4. 封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:
1. 将变化隔离。
2. 便于使用。
3. 提高重用性。
4. 提高安全性。

封装原则:
1. 将不需要对外提供的内容都隐藏起来。
2. 把属性都隐藏,提供公共方法对其访问。如,getXXX,setXXX。

5. 构造函数
构造函数就是函数名和类名保持一致,没有具体的返回值,分为有参构造函数和无参的构造函数,上面的School类中定义了一个有参的构造函数,构造函数的作用就是给对象进行初始化操作,多个构造函数可以以重载的形式存在。如果你没有定义构造函数那么程序在创建对象的时候就会调用了其默认的构造函数,默认的构造函数是无参的。特别注意的是如果该类定义了构造函数那么默认的无参的构造函数就不存在了。
那么既然都是类的函数那么构造函数和一般的函数有什么区别呢
(1)构造函数在对象创建时就会被调用,用来对对象进行初始化。而一般函数是对象创建之后需要函数功能时才进行调用。
(2)构造函数是函数创建时被调用一次,而一般函数是对象创建后被调用多次。
6. this
this代表的是本对象的引用,当成员变量和局部变量重名的时候就可以使用this关键字来区分。
特别注意this的另外一个用法是在构造函数中调用另外一个构造函数,调用的时候直接this(参数)注意这句话要放在构造函数的第一句,因为初始化动作要先执行。
7. static
static关键字用于修饰成员这里的成员顾名思义就包括成员变量和成员的函数,被修饰后的成员有以下的特点随着类的加载而加载,优先于对象存在因为随着类的加载被加载,被所有对象所共享,可以被类名直接调用需要注意下面3点
(1)静态方法只能访问静态成员
(2)静态方法中不可以写this,和super关键字
(3)主函数是静态的
当一个成员变量被static修饰后就不是成员变量了称为静态变量或者是类的变量,那么成员变量和静态变量的区别是什么呢?
(1)两个变量的生命周期不一样
成员变量随着对象的创建而存在,随着对象被回收而被释放,静态变量随着类的加载而存在,随着类的消失而消失。
(2)调用的方式不同
成员变量只能被对象调用,静态变量可以被对象调用也可以被类名调用
(3)别名不同
成员也称为实例变量,静态变量称为类变量
(4)数据的存储的位置不同
成员变量数据存储在堆内存对象中,所以也叫对象特有的数据。
静态变量数据存储在方法区,所以也叫对象的共享数据。
静态代码块
静态代码块随着类的加载而加载,只运行一次其作用是对类进行初始化,肯定是在执行构造函数之后了。
构造代码块
构造代码块也是用来给对象进行初始化的,只不过是构造函数具有对象初始化的针对性而构造代码块具有对象初始化的通用性
下面我们通过代码来看下构造函数和构造代码块和静态代码块的执行顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值