JAVA学习总结三

来源:互联网 发布:淘宝卖家客服人工服务 编辑:程序博客网 时间:2024/05/13 09:42

学习总结

本次总结接续上篇总结内容,对JAVA知识的总结如下:

第七章 继承

  1. equals方法
    用于判断两个对象是否相等。
    注:“==”只是用于判断两个引用是否指向同一个对象,equals方法用于判断对象的内容是否相同。
  2. super关键字
    1. ”super.”
      定义:当前对象中父类的部分。
      效果:使用后,本类中内容不可访,来自父类的内容受访问修饰符影响。
      用途:经常在方法重写又企图调用父类中的实现时使用。
    2. “super()”
      定义:父类的构造。
      效果:使用后,本类内容不可访,来自父类的构造可访(形参对应)。
      用途:经常在继承父类后不清楚如何产生父类原有构造时调用。
      注:super()和this()一样都必须写在构造中代码的第一行。
  3. final关键字
    1. final类:一个类可以声明为最终类的。最终类不能被继承。
    2. finai方法:一个方法可以声明为最终的。最终方法不能被重写。

第八章 类的高级概念

  1. 访问修饰符
    1. public:使用后,被使用的成员对外公开,可以被其他任何对象访问。
    2. protected:使用后,被使用的成员A可以被同一包中的其他类及成员A的子类访问,不论子类在哪个包中。
    3. 默认级别:使用后,被使用的成员可以被同一包中的其他类所访问。
    4. private:只有类本身可以访问,不对外公开。
      注意:访问权限:public>protected>默认>private
  2. 封装
    1. 概念:使用private定义成员,同时定义public方法访问 成员的技术,也被称为数据隐藏。
    2. 好处:1. 类的成员变量可以称为只读或者只写的;2. 类可以对存储在其成员变量中的内容有一个整体控制;3.类的用户不需要知道类是如何存储数据的。
    3. 静态成员
      关键字STATIC声明的成员为全局的,与对象无关。
      1. 运行:加载期,内存运行前即加载到内存数据段静态区。
      2. 调用静态方法可以直接调用,不需要new对象。
    4. 静态代码块
      经常用于类加载前的准备工作代码,大型项目常见。
    5. 实例初始化块
      在对象产生的时候被自动运行,每产生一次对象被执行一次。
    6. 内部类
      1. 静态内部类
        可以引用外部类的静态成员变量和静态方法,但是不能引用外部类的普通成员。
      2. 成员内部类
        可以调用外部类的所有成员,但是只有创建了外部类的对象后,才能引用外部的成员。
      3. 局部内部类
        需要将要调用的局部变量定义为final的。
      4. 匿名内部类

第九章 多态和抽象

  1. 多态:多态指的是编译时类型变化,而运行时类型不变。
  2. 分类:多态分两种:
    ① 编译时多态:编译时动态重载;
    ② 运行时多态:指一个对象可以具有多个类型。
  3. 运行时多态的三原则:(应用时为覆盖)
    1、 对象不变;(改变的是主观认识)
    2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
    在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
    注意:编译时类型一定要为运行时类型的父类(或者同类型)。
    对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。
    3、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。

  4. 关系运算符:instanceof
    instanceof Animal;(这个式子的结果是一个布尔表达式)

例如: a instanceof Animal返回 True,
a instanceof Dog也返回 True,
1. instanceof用于判定是否将前面的对象变量赋值后边的类名。
2. Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。

如果Animal a=new Animal();
Dog d=Dog()a;
此时编译无误,但运行则会报错。

Animal a=new Dog()相当于下面语句的功能:
Animal a=getAnimal();
Public static Animal.getAnimal;
Return new Dog();

封装、继承、多态为面向对象的三大基石(特性)。

运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。
未完待续

0 0