A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2017-12-22 15:20 编辑

面向对象(静态,数组工具类,代码块)

*static关键字:
          要想调用一个方法,需要创建相应的对象,用对象调用该方法。调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?
*静态的特点:
          a:被static修饰的成员变量属于类,而不属于该类的某个对象。
          b:多个对象在同时访问被static修饰的成员变量时,某个对象对被static修改的成员变量进行修改时,其他对象中被static修饰的成员变量也会随之改变。
          c:被static修饰的成员变量可以通过类名直接访问。
          d:访问静态成员变量的格式是:
                                               类名.静态成员变量
                                               类名.静态成员方法(参数)   
          e:静态的加载优先于对象,随着类的加载而加载。

面对对象的第二个特征:继承


继承:在多个类中具有相同的成员变量和成员方法,我们就可以把它抽取到一个类中(父类,也叫基类),在让多各类去继承这个类,这样多各类就可以得到父类的成员变量和成员方法了。

继承的关键字:extends

继承的特点:

      a:java语言支持单一继承和多层继承

      b:继承只有一个父类

继承中成员的特点:

      *子类只能获取父类的非私有成员

继承中的就近原则:

  谁离我近用谁(在类中有局部变量优先使用,其次是成员变量,两者都没有,看其父类的变量,都没有的话,程序报错)

super:可以获取父类中的成员变量和成员方法,用法和this相似。

继承中成员方法的特点:

当父类无法满足我们的要求时,自己写一个方法(这个就是重写或者叫覆盖),前提是要有继承关系,其他的条件不成立。

方法重写的应用场景以及注意事项:

   权限必须大于等于父类的权限,否则会出现问题。

继承中构造方法的执行顺序:

   在字父类的继承关系中,创建子类对象,调用子类构造方法时,如果子类构造方法的第一行代码没有调用父类的构造方法时,系统默认调用父类的无参构造。无论你是有参构造还是无参构造,第一步肯定要执行父类构造方法,是因为要先对父类的成员进行初始化,有可能子类会用到。

this和super的区别:

   this:

a:调用子类的成员变量和成员方法

         b:在子类构造第一行调用子类的其他构造方法

super:

  a:调用的是父类的成员变量和成员方法

         b:在子类的构造方法中去调用父类的构造方法

继承的优缺点:

      优点:

         *提高代码的复用性

         *提高代码的可维护性

      缺点:

          *类的耦合性增强了

          *开发原则:高内聚低耦合

          *类与类的关系

匿名对象

什么是匿名对象?

   *就是没有变量引用的对象

匿名对象的应用场景:

    *只需要创建一次对象的时候可以使用匿名对象

    *多次使用的话会浪费内存空间

匿名对象可以对成员变量进行赋值吗?

匿名对象可以对成员变量进行赋值,但是毫无意义

   举例:

    new student().age = 20;

   system.out.println(new.student().age);结果还是0,而不是20。

匿名对象可以作为参数传参,但是在传参之前能做的事就很少了。

关键字final:

final是最终的意思

   final是修饰符,可以修饰类,成员变量和成员方法。

  *被final修饰的类:

被final修饰的类是最终的类,不能被继承

        被final修饰的方法是最终的方法,不能被重写

        被final修饰的变量是不能改变的,也就是常量

自定义常量:一旦被final修饰的成员变量,被初始化后就不可改变

注意:自定义常量必须被初始化,可选择显示初始化和构造初始化

抽象类:

抽象方法:

不同类的方法相似,但是描述方法又似乎不一样,所以我们只能抽取其中的声明(舍去方法体)这样只有声明没有方法体的方法就叫做抽象方法

关键字:abstrct

抽象类:

有抽象方法的类就叫做抽象类

注意:一个类继承一个抽象类,必须要重写它的抽象方法,要是不重写, 那他必定也要是抽象类

抽象类的特点:

*抽象方法必须在抽象类中

*抽象类和抽方法必须被abstrct修饰,少了哪一个都不行

*抽象类不能创建对象(也就是不能被实例化)

*抽象类中可以有非抽象类

*类和抽象类之间也是继承

抽象类的成员方法:

成员变量:

    *可以有成员变量

    *可以有常量

成员方法:

   *可以有抽象方法

    *可以有非抽象方法

构造方法:

    *可以有构造方法,需要对抽象类的成员变量进行初始化

接口

优点:

   *打破了单一继承的局限性

   *降低了程序的耦合性

接口与抽象类的区别:

   *类与接口是实现关系,而且是多实现,一个类可以实现多个接口

   *类与抽象类之间是继承关系,java中是单一继承,一个类只有一个父类,是多层继承

成员变量和成员方法:

  *抽象类可以有抽象方法和非抽象方法

  *接口只能是抽象方法,而且修饰符是:public abstrct

构造方法:

*抽象类有构造方法

  *接口没有构造方法

多态

    *多态的前提子父类要是继承关系

    *方法的重写

    *父类引用指向子类对象

多态间的成员特点:

成员变量:编译时看左边,运行时还是看左边。

     成员方法:编译时看左边,运行时还是看右边。

     静态方法:编译时看左边,运行时还是看左边。

集合

集合的体系结构:

由于不同的数据(数据组织,存储方式)所以java为我们提供了不同的集合,但是功能都是相似的,不断地把共性相同的提取出来。

集合的遍历方式:

*通过toArray()把集合转换成数组,然后遍历数组

   *通过itrator(),可以返回一个迭代器对象,通过迭代器对象来迭代集合

foreach:增强for循环,一般用于遍历集合或者数组

     格式:

          for(元素的类型 变量:集合或者数组的对象) {

                        可以直接使用变量;

}

Collection的子体系:List

     *有序的(存储和读取的顺序是一样的)

     *有整数索引

     *允许重复的

List的常用子类:

     ArrayList:

      底层是数组结构,查询快,增删慢。

    LinkedList:

底层结构是链表。查询慢,增删快。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马