面向对象的特点:
1.符合人的思考方式;
2.复杂问题简单化;
3.使曾经在过程中的执行者变成了对象中的指挥者。
面向对象程序设计的特点:封装,继承,多态。
成员变量和局部变量的区别:
1.成员变量定义在类里,整个类都可以访问;局部变量定义在函数、语句、局部代码块中,只有所属区域才有效。
2.成员变量存在于堆内存的对象中;局部变量存在于栈内存的方法中。
3.成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
4.成员变量都有默认初始化值,局部变量没有默认初始化值。
匿名对象:
匿名对象就是定义对象的简写。
在何时使用匿名对象呢?
1.当对象对方法仅进行一次调用的时候,就可以简化为匿名对象:
new Car().num=5;//给Car类型对象的num赋值5
new Car().run();//给Car类型的对象调用run()方法
以上代码的对象(匿名对象)运行完就释放,因为没有了引用。
2.匿名对象可以作为实际参数进行传递,这种情况下,匿名对象不会作为垃圾回收,因为会指向引用。(即在函数参数中使用匿名对象。)
封装
封装即:
1.把不需要提供的内容隐藏起来;
2.把属性隐藏起来,只对外提高公共方法(public),但不是所有的方法都得向外提供。
封装的优势:
1.将变化隔离
2.便于使用
3.提高代码的重用性
4.提高代码的安全性
private:
private(私有)是一个权限修饰符,用于修饰成员,私有的内容只在本类中有效。
注意:私有仅仅是封装的一种体现而已,封装还有其他形式。
Java语言中最小的封装体是函数,类本身也是一种封装体,框架也是。
封装的常用方式之一:将成员变量私有化,对外提供对应的set、get方法对其进行访问。
构造函数:
特点:
1.函数名与类名相同;
2.不用定义返回值类型;
3.没有具体的返回值;
作用:给对象进行初始化。
一个类的多个构造函数是以重载的形式存在的。
构造函数在对象一创建时就执行。一个类中如果没有显式地定义构造函数,那么这个类会有一个默认的空函数构造函数。如果显式地定义了构造函数,那么就不会有这么一个默认的空函数构造函数。(这是由于如果此时还存在这一个默认的构造函数,显式定义的构造函数名与其相同,参数可能也相同,这样jvm就无法区别两个函数,它们之间产生了冲突。)
一般函数与构造函数的区别:
构造函数:对象创建时就会调用与之对应的构造函数,对对象进行初始化。构造函数只会调用一次。
一般函数:对象创建后,需要用函数是才调用。可以调用多次。
什么时候定义构造函数:在描述事物时,该事物就具备一些内容(性质),这些内容都定义在构造函数当中。
构造函数的重载:一个类中可以有多个构造函数,根据需要来对不同的对象进行不同的初始化。
重载:函数名相同,参数个数,参数类型不同。