1 面向对象介绍
1.面向对象对象其实就是现实生活中的各种物体,他们有各种各样的功能,当我们需要借助这些物体去完成我们的需求时,我们就是在面向这些对象,使用它们其中的功能,至于他们其中的功能是如何实现的,我们无需知道,只要能完成需求既可。万物皆对象,刚开始学 习对象和类的时候建议不要看构造函数, 构造带码块 ,匿名函数, 封装 ,成员代码块,this关键字,以及静态修饰,学习一些基本的东西就不会让你感觉到类和对象是那么烦的东西,其实类和对象很简单,不要想的那么复杂,为什么我下面会说oop(面向对象)是一种思想呢, 因为当你了解了对象之后就会知道对象的使用是 多么简单,对象就好像是一个人一样,你让他干嘛他就干嘛。他不会罢工,只要这段代码的生存周期还在的前提下,就是说这个人还活着。他有钥匙(变量)你让他开门(方法)[函数调用变量进行操作],他就开门,至于他怎么开门你不用理会先,你只需要知道了你让他干嘛他就干嘛这就是一种面向对象的思想。回到那个人开门那里。为什么他会开门。就因为这个人(对 象)拥有开门的方法,所谓的方法就是函数,函数怎么定义呢。相信学到这里的人都应该知道如何写函数了吧。我这里就带过了。我们让他开门他就得开。然后我们再命令另外个人去开窗,这两个人是不一样得人,拥有得方法(函数)不一样。我们可以创建另外一个对象,叫他去开窗。如果你想让这个人拥有开门又拥有开窗的方法,那么就要给一个对象定义多个方法(函数),那我们就不需要再去创建多一个对象浪费内存了。 至于类和对象得关系就更简单了。类就相当于一个概念,都有共同的属性,比如说年龄 名字 他们都拥有这些属性,类的实例化就是对象。 什么是实例化呢。实例化就是说精确到一个个体(一个人)。在一个类中创建一个对象就需要用到一个关键词“new”,这个关键字的功能很 多,这里只说一点,他就是用来创建对象。 创建了对象之后我们就要叫这个人做事了,做事总得有个方法来叫是不是,那就是专业词语 (其实也不算专业)调用,调用得方法就是 对象名.方法 这就是叫那个人做事的命令。你想要 他干嘛他就干嘛。你想他有什么功能就直接到类里面去定义,要实例化了才能调用,(即创建对象,暂时需要知道的就是要先创建对象,至于学 到后面直接引用类名.方法就需要使用静态修饰这里不多说,免得造成初学者的困难)比如你要他执行a和b相加。直接在类里面的函数里创建下 变量 然后执行一个a+b的方法return下返回值就可以了。调用完就可以得到 一个数,就是说你用这个方法就能得到了这个相加后的值。 在 我觉得面向对象的复用性就是面向对象的最好用的特点,因为它可以减少你的敲写代码的时间,增大代码的可观看性(也可以说事理解性,这样才能能更好的帮助阅读你的程序的人)。 它两的关系就这么简单。有什么不懂的pm我。当你完全学会了面向对象的思想就可以一步一步的学习下面
的构造函数和静态 还有封装的一些性质。
2.什么是面向对象编程(OOP):Object Oriented Programming是一种编程思想, 使用对象去进行编程.
它的特点有: 封装,继承, 多态 。
3.对象从哪来:对象是需要先用类来描述, 然后使用类来创建.
类是对象的描述, 对象是类的实例.
4.面向对象的优点
提高代码复用性.
使用者无需关心对象其中是如何实现的.
让程序员从一个编写者转换成一个使用者.
更加符合人的思维能力,使编程更简单.
2 定义类
1.成员变量
在类中用变量来描述这一类对象公有的特征.
2.成员函数
在类中用函数来描述这一类对象公有的行为.
3 创建和使用对象
1.怎么创建
使用"new 类名()"形式创建一个对象
2.怎么使用
通过"."语法来访问类的成员.
例如: Person p = new Person();//创建对象 p
p.name = "张三"; //给对象定义的name赋值
p.eat(); //调用p对象里面的eat方法
4对象的初始化过程
1.加载类
类在第一次使用的时候被加载到内存中
2.初始化成员变量
当创建对象的时候, 成员变量会初始化为默认值, 基本数据类型都是0, 引用数据类型都是null
5对象的生命周期
1.开始
new关键字创建对象的时候, 生命周期开始
2.结束
没有任何引用指向对象, 该对象成为垃圾, 被虚拟机回收
6 匿名对象
1.什么是匿名对象
没有任何引用指向的对象, 就叫匿名对象
2.匿名对象有什么特点
匿名对象在创建之后立即被回收, 只能使用一次
7 封装
1.什么是封装
封装就是将一类事物的特征和行为封装在一个类中, 定义成成员变量和成员函数
创建对象之后, 这些成员函数可以访问自己的成员变量
2.对成员变量的封装
使用private关键字将成员变量私有化
如果需要对外部提供访问方式, 写公有的get,set方法
8 构造函数
1.什么是构造函数
构造函数是一个特殊的函数.
函数名必须和类名一致.
没有返回值类型.(不等于void,不能写任何返回值).
可以写return,但是不能写return+值(尽量不要写).
new关键字创建对象时自动调用
2.应用场景
如果我们希望一段代码在创建对象的时候执行, 就可以写在构造函数中
通常我们使用构造函数对成员变量进行赋值
3.构造函数和成员变量的执行顺序
成员变量优先于构造函数先执行,因为通常使用构造函数都是对成员变量进行初始化,所以如果没有成员变量,构造函数是没有任何意义的.
4.构造函数的重载
和普通函数一样, 参数列表不同(类型不同,顺序不同,个数不同)即可.
重载只与参数列表有关
5.构造函数的调用
在创建对象时自动调用.
在构造函数的第一条语句可以使用"this(被调用的构造函数的实际参数)"的形式调用该类其他构造函数.
6.自动生成构造函数
在一个类中构造函数是一定存在的.
因为在一个类中如果没有写任何的构造函数, 编译时也会自动生成一个无参的构造函数, 里面什么代码都没有.
如果写了任何一个构造函数, 那么就不会有自动生成的了
注意:我们在类中只写了一个有参构造函数的时候, 这个类就不能使用无参的构造函数创建对象了
7.构造函数的访问权限
通常构造函数的访问权限都是公有的, 因为构造函数就是为了让别人创建对象时调用的
个别情况下在定义类时不希望外部创建对象, 这时可以使用private修饰构造函数, 例如:单例设计模式(Singleton)
8成员变量和局部变量
1.成员变量
在类中定义的变量,(Field),在整个类都可以访问(用于描述着一类事物的共有特征).
成员变量随着对象的建立而建立,存在于对象所在的堆内存中.
成员变量有默认初始值(0/false/null)
2.局部变量
在方法/语句中定义的变量(Local Variable),
存在于栈内存中.
作用范围一结束,变量的空间会自动释放.
局部变量是没有初始值的.
3.同名问题
在同一个作用域中成员变量不能重复, 局部变量也不能重复
但是成员变量和局部变量可以同名, 他们互相不冲突
9 this关键字
1.构造函数中
"this(参数)"形式可以在构造函数的第一条语句中调用其他的构造函数
"this.成员名"形式可以调用当前对象的成员
2.普通函数中
this用在普通的函数中, 可以代表调用当前函数的对象
哪个对象调用this所在的函数,this就代表那个对象.
3.内部类中
可以使用 外部类名.this.成员 来访问外部类的成员.
10静态(static)变量
1.什么是静态变量
用static修饰的成员变量就是静态变量(随着类的加载而加载)
优先于所有非静态成员及成员代码块.
2.静态变量和普通变量有什么不同
静态变量在类加载后就初始化, 不用创建对象可以直接使用.
静态变量被类的所有对象共享(在共享区), 通过一个对象改变, 所有对象都改变.
静态变量可以使用"类名.变量名"形式访问, Java推荐使用这种方式, 而不是通过对象访问.
3.类在什么时候加载
类在第一次使用的时候加载
例如:创建对象, 使用静态变量, 使用静态方法
定义变量的时候不加载类.
4.静态变量在什么时候使用
在定义一个类的时候, 如果希望这个类的所有对象共享一个数据时, 就可以使用静态成员变量
|
|