JAVA面向对象

1、this 用于区别成员变量与局部变量重名

    在成员变量前面添加 this.

2、构造方法

A 构造方法概述:  

    作用:为了给对象的属性初始化

    特点:方法名与类名相同,没有返回值,不需要void

    注意:构造方法不能用对象调用,在创建对象的时候构造方法与已经执行。

B 构造方法重载:

    方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表

    注意:如果不写构造方法,系统会自动给出空参构造。如果要给出有参构造的时候,必须要先给出空参构造。

3、static 关键字

*A:static关键字的特点

    * a:随着类的加载而加  * b:优先于对象存在   * c:被类的所有对象共享   * d:可以通过类名调用

     如果一个成员变量被所有对象共享,那么就可以把成员变量设置为静态static

*B 静态的注意事项

    *a 静态方法中没有this关键字。

             静态是随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在。

    *b  静态方法只能访问静态的成员变量和静态的成员方法

*C 静态变量和成员变量的区别

     静态变量也叫类变量  成员变量也叫对象变量

    *A:所属不同

        *静态变量属于类,所以也称为为类变量

        *成员变量属于对象,所以也称为实例变量(对象变量)

    *B:内存中位置不同

        *静态变量存储于方法区的静态区

        *成员变量存储于堆内存

    *C:内存出现时间不同

        *静态变量随着类的加载而加载,随着类的消失而消失

        *成员变量随着对象的创建而存在,随着对象的消失而消失

    *D:调用不同

        *静态变量可以通过类名调用,也可以通过对象调用

        *成员变量只能通过对象名调用

5、代码块

    A  代码块分类:

    根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)

    B:常见代码块的应用

        * a:局部代码块:   在方法中出现;限定变量生命周期,及早释放,提高内存利用率

        * b:构造代码块 (初始化块): 在类中方法外出现;多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行

        * c:静态代码块: 在类中方法外出现,并加上static修饰;用于给类进行初始化,随着类的加载而加载,在加载的时候就执行(优先于主方法执行),且只执行一次。    *一般用于加载驱动

6、继承

     A :继承的好处:* a:提高了代码的复用性  * b:提高了代码的维护性   * c:让类与类之间产生了关系,是多态的前提

    B  :继承的弊端:* 类的耦合性增强了。*开发的原则:高内聚,低耦合。*耦合:类与类的关系  *内聚:就是自己完成某件事情的能力

    C :继承的特点: JAVA中只支持单继承(只有一个爹),支持多层继承(有祖宗)。

    D:  继承的注意事项: *a:子类只能继承父类所有非私有的成员(成员方法和成员变量)   * b:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。  * c:不要为了部分功能而去继承

    E:  继承中成员变量之间的关系: * 同名变量:就近原则

    F: 继承中构造方法的关系:

        * 子类中所有的构造方法默认都会访问父类中空参数的构造方法。* 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

         每一个构造方法的第一条语句默认都是:super() ,即使不写,系统会默认加上,用来访问父类中的空参构造。

        如果父类中没有给出无参构造,同时又写了有参构造,则会出现问题

    G: 继承中成员方法之间的关系:

        * 重写: 子父类出现了一模一样的方法     * 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。

        *方法重写注意事项:

             a:父类中私有方法不能被重写 :因为父类私有方法子类根本就无法继承

             b:子类重写父类方法时,访问权限不能更低,最好就一致

            c:父类静态方法,子类也必须通过静态方法进行重写。 其实这个算不上方法重写,静态只能覆盖静态

             子类重写父类方法的时候,最好声明一模一样。

      H :Override(重写)和Overload(重载)的区别?

               overload可以改变返回值类型,只看参数列表

               方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的

               方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。

              *子类对象调用方法的时候,先找子类本身,再找父类。

7、this 与super

    *A:this和super都代表什么

        * this:代表当前对象的引用,谁来调用我,我就代表谁

        * super:代表当前对象父类的引用

    *B:this和super的使用区别

        * a:调用成员变量

            * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量(继承)

            * super.成员变量 调用父类的成员变量

        * b:调用构造方法

            * this(...) 调用本类的构造方法

            * super(...)    调用父类的构造方法

        * c:调用成员方法

            * this.成员方法 调用本类的成员方法,也可以调用父类的方法(继承)

            * super.成员方法 调用父类的成员方法    

    注意:在一个构造方法中不能同时写this(...) 和super(...) 。  this(...) 和super(...) 必须卸载第一条语句。

8、final

    A:概述:

    B:final修饰特点

        *修饰类,类不能被继承

        *修饰变量,变量就变成了常量,只能被赋值一次

        *修饰方法,方法不能被重写

        *修饰引用数据类型:不能改变其地址值,但是可以改变其属性值

        *修饰基本类型变量:不能改变其值。

9、多态(polymorphic)

    A:概述:事物存在多种形态

    B:多态前提:  要有继承、方法重写、父类引用指向子类对象

    C:成员变量:编译看左边(父类),运行看左边(父类)

           成员方法:编译看左边(父类),运行看右边(子类)   动态绑定。

        静态成员方法:编译看左边(父类),运行看左边(父类) 静态和类相关,不算重写,看左边

    D:多态的好处:提高了代码的维护性,提高了代码的扩展性。  把类当做参数的时候多态非常好,扩展性强。

10、抽象 abstract

    抽象类特点:

        抽象类和抽象方法必须用abstract修饰。 

        抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口。

         抽象类不能实例化,按照多态有子类实例化。

        抽象类的子类要么是抽象类,要么重写抽象类中的所有抽象方法。

        抽象类中成员变量可以是常量也可以是变量。

        抽象abstract 不能和static 、private、final共存(作用矛盾)

11、接口

接口特点:

        用关键字interface表示: interface 接口名{}

        类实现接口 :class 类名 implements 接口名{}

        接口不能实例化,只能用多态的方式实例化

        接口的子类可以是具体类,要重写接口中的所有抽象方法。   可以是抽象类,但意义不大。

    成员特点:

        成员变量只能是常量,并且是静态的公共的。 public static final

        接口没有构造方法。 成员方法只能是抽象方法。 public abstract

12、类与类,类与接口,接口与接口

    类与类:继承关系,只能是单继承关系,可以多层继承

    类与接口:实现关系,可以是单实现,可以是多实现,并且可以继承一个类的同时实现多个接口

    接口与接口:继承关系,可以单继承可以多继承

13、权限修饰符

                      本类    同一个包下(子类和无关类)   不同包下(子类)  不同包下(无关类)

        private     Y      

        默认         Y                       Y

        protected Y                        Y                                        Y

        public       Y                         Y                                       Y                     Y

14、内部类私有

    A:内部类访问特点

        * a:内部类可以直接访问外部类的成员,包括私有。

        * b:外部类要访问内部类的成员,必须创建对象。

        *外部类名.内部类名 对象名 = 外部类对象.内部类对象;

    B:成员内部类私有使用

推荐阅读更多精彩内容

  • pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 ...
    王震阳阅读 73,636评论 25 504
  • 面向对象三大基本特性是:封装,继承,多态 封装 1.概念:把类的属性进行封装,可以隐藏方法的内部实现,仅仅提供调用...
    姜水伟杰阅读 82评论 1 0
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 76评论 0 0
  • 这几天事情真的很多,好像有些浮躁,原因是再次进入币圈,面对不断涨跌的市场,很不淡定。有些头晕经医生测量是低血压,正...
    城西居士阅读 19评论 0 0
  • 跟着一群爱折腾的小伙伴们,持续写作一年了。一周年,多么有仪式感的日子,总得干点有意义的事,于是我把以前写的文章全翻...
    陆小满阅读 285评论 0 2