面向对象 再理解

面向过程:强调的是每一个功能的步骤
面向对象:强调的是对象,然后用对象来调用功能

一.面向对象的特征:

抽象
封装
继承
多态


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

类:

组成:成员变量,成员方法,构造方法

1.变量:

(1)成员变量和局部变量区别?

     位置,内存位置,生命周期,初始化值(二者名称一样时----就近原则)

2.方法:

   (1)形参

     分类:基本类型,引用类型(传的是地址,三种引用类型)

                       形参类型补充: 类名:需要的是该类的对象;

                                      抽象类:需要的是该抽象了子类对象;

                                      接口:需要的是该接口的实现类对象。

   (2)返回值

       分类:基本类型,引用类型(也是三种)

                         返回值类型补充:类:返回的是该类对象

                                      抽象类:返回的是该抽象类的子类对象:

                                      接口:

   (3)匿名对象

             应用场景:A.调用一次后被回收,B.可作为实参传递

   (4)构造方法

           好处:对必要参数初始化,减少代码量;

           A.自己不给,系统自动提供一个无参构造

           B.自己给出,系统将不再提供无参构造函数

            形式:SetXxx和构造方法

3.关键字:

(1)private

          可以修饰什么?

          访问权限?

(2)this

           当前类的一个对象

           *应用场景:解决局部变量,隐藏成员变量。

(3)static

          存在的意义:让使用者通过类名去访问;说白了,也是为了初始化,只不过在类的层面上!!!!!

          访问权限?----可以修饰成员变量,还可以是成员方法

          static关键字的特点:ABCD

                            E静态方法中无this关键字,why?

                              F.静态方法只能访问静态成员变量和静态成员方法

           静态变量和成员变量区别:

                              所属,内存位置,内存中出现时间,调用不同


如图:
栈区:存放局部变量(Person p1=new Person 同样符合局部变量的命名规范:变量类型  变量名=变量初始化值)
堆区:存放对象
方法区:比较复杂;这里包括:类内容区域,静态区,方法区........
由图知:将类放到方法区的同时,同样在方法区开辟了一块静态区,存放静态数据。静态数据属于类成员。

4代码块

    (1)概念:用{}括起来的成为代码块

    (2)分类:按位置和声明不同:局部代码块;构造代码块;静态代码块

    (3)静态代码块,构造代码块,构造方法,执行顺序:?

内部类(补充):

    (1)概述:把类定义到其他类内部,就成为内部类。

    (2)访问特点:A.内部类可以直接访问外部类的成员,包括私有:

                   B.外部类要访问内部类的成员,必须创建对象。

    (3)匿名内部类:是一个继承了该类或者实现了该接口的子类匿名对象

三.继承:

1.概念,特点

     特点:子继承父所有非私有成员 

           子不能继承父构造方法,但可通过super访问。

           子所有构造方法默认都会访问父中无参构造方法。?

           如果父中没有无参构造,会报错,怎么解决?ABC

               补充:A.一个类的初始化过程:(当然静态数据随类加载而加载,最先初始化!)

                                成员变量的初始化

                                 默认初始化

                                 显示初始化

                                 构造初始化

                      B.子父类的初始化(分层初始化)

                               先进行父类初始化,然后进行子类初始化                       

2.关键字

(1)super

          由来:this是描述本类对象,那么描述父类对象就有了super

                this(...)或者super(....)必须出现在一条语句上,否则?

          怎么用?

                A调用成员变量?B调用构造方法?C调用成员方法?

                 在继承中,子的构造方法中有,默认super()方法,访问父类构造方法。

(2)final

          修饰的范围:类,方法,变量

          特点:修饰类?

                      修饰方法?

                       修饰变量?

                       final修饰局部变量为:基本类型:基本数据值不能改变

                                            引用类型:___不能改变,___可以改变。          

3重写

特点:在继承中,子类方法与父类完全一样

                父中私有方法不能被重写

                父类静态方法,子类必须用静态方法重写(子重写父方法时,最好生命一模一样)

               

       

四,多态

1.概述,特点

     (1)多态中成员访问特点:

                A.成员变量

                B.构造方法

                C.成员方法:编译看左边,运行看右边。

                D,静态方法

      (2)多态好处:

                 A.提高代码维性:(由继承保证)------抽象类

                 B.提高代码的扩展性:(由多态保证)--------接口

       (3)对象间转型问题:

                 向上转型:Fu  f = new Zi ();

                 向下转型: Zi   z =(Zi)  f;    要求改f必须是能够转换为Z的。

2.抽象类:

  (1)概述和特点:

                   A关键字

                   B.抽象类不一定有抽象方法,但.......

                    C.抽象类不能实例化

                    D.抽象的子类形式:a,b

                    抽象类的实例化其实是靠具体的子类实现的,是多态的方式。

   (2)成员特点:

                     成员变量:变量或者常亮

                     构造方法:有

                     成员方法:

    (3)抽象类的意义--------------------------------------------------就是为了重写!!

                    因此:如果抽象类没有抽象方法,是可以存在的,意义是不让创建对象。

                    abstract不能与那些关键字共存:

                     private:冲突?
                     final:冲突?

                     tatic:无意义?

3接口:

   (1)特点:

          对比抽象类.......

    (2接口的成员特点:

           成员变量:只能是__默认修饰符____;

           构造方法:无

            成员方法:只能是___默认修饰符____;

            所有类都默认继承自一个类:Object

            Object 是类层次机构的根类,每个类都是用Object作为超类。

     (3)接口意义:--------------------------------------------------------------就是为了添加!!

4抽象类和接口比较:

       相同:1.二者继承中许多相似的特点

       区别:A.成员区别:

                       抽象类:

                        接口:

             B.关系区别;

                       类与类:

                                     继承,单继承,多层继承

                        类与接口:

                                       实现,单实现,多实现

                        接口与接口:

                                        继承,单继承,多继承

             C.设计理念区别:

                        抽象类:被继承体现的是“is   a” 的关系,抽象类中定义的是该继承体系的共性功能。

                        接口:   被实现体现的是“like   a”的关系,接口中定义的是该继承体系的扩展功能。



 

总结:加强思维导图练习

      按时总结,组织知识网。




          



 


评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值