黑马程序员--面向对象(一)

来源:互联网 发布:淘宝上的上海大药房 编辑:程序博客网 时间:2024/05/02 01:11
------- android培训java培训、期待与您交流! ----------

1.面向对象

       面向对象是相对面向过程而言,面向对象和面向过程都是一种思想。面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能的对象。面向对象的特征:封装(encapsulation),继承(inheritance),多态(polymorphism).

2.类与对象的关系

      
    在图中,类就是图纸,汽车就是对象,对象就是该类实实在在存在的个体
    匿名对象:是对象的简写形式,使用情况有两种:a.当对对象方法仅进行一次调用的时,如:new car().getName(); b.匿名对象可以作为实际参数进行传递.

3.成员变量和局部变量

    成员变量:a.定义在类中,在整个类中都可以被访问
             b.随着对象的建立而建立,存在于对象所在的堆内存中
             c.成员变量有默认初始化值
    局部变量:1.只定义在局部范围内,如:函数内,语句内等。
             2.存在于栈内存中
             3.作用的范围结束,变量空间会自动释放
             4.局部变量没有默认初始化值

4.封装

    封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
    封装的优点:将变化隔离,便于使用,提高重用性和安全性.

    private关键字:用于修饰成员变量和成员函数,只能在本类中访问,是java语言的最低权限,将成员变量私有化,对外提供set,get方法进行访问.

private int age;public int getA() {return this.age;}public void setA(int age) {this.age = age;}

5.构造函数

    构造函数可以对对象进行初始化,其特点是:函数名必须与类名一致,不需要定义返回值类型,不需要return语句,多个构造函数是以重载的形式存在的.

6.this关键字和super关键字

           super与this的区别:this可以区分本类对象中的成员变量和函数内的局部变量,而super可以区分本类对象中的成员变量和父类对象中的成员变量.访问原则:在函数中就近访问;调用本类对象的成员变量使用this,调用父类中的成员变量使用super.

7.静态关键字

    static用于修饰成员变量和成员函数,不能修饰局部变量.被static修饰的成员,可以被所有的对象共享,随着类的加载而加载,可以被类名直接调用,静态成员先于对象存在于内存中.

    静态的应用场景:当类中的成员变量,被所有对象共享的时候,推荐定义成静态变量;在类中,不会变化的成员变量,定义成静态,变量名都大写;当函数从不访问类中的变量时可以定义为静态函数。

    注意:静态方法只能访问静态成员,静态方法中不可以写this,super关键字,主函数是静态的

8. final关键字

    final是一个修饰符,被修饰的类是最终类,不在派生新的子类;被修饰的函数是最终函数,不能被覆盖;被修饰的变量就相当于一个常量,程序中固定不变的数据一般可以定为final如public final static double PI=3.14。内部类只能访问被final修饰的局部变量。

学习感悟

    对于面向对象的问题,应牢记谁拥有数据谁就定义操作该数据的方法.封装提高了代码的安全性,同时需要对外提供set和get方法来访问对象.函数中有就近访问原则,调用本类成员和父类成员分别可以使用this和super关键字.当成员被所有对象共享时,需要设置成静态.