生命不息,学习不止,对一切都要维持敬畏之心。
若有不正之处,请谅解和批评指正,不胜感激。

1.面向对象

面向对象思想,是一种可以映射现实并且能够实现抽象程序设计思想,是对复杂代码的管理而不是代码的实现.它不需要处理每个细节,只需要找一个具有该功能的类,通过调用该类对象的行为和属性来实现功能,目的是将复杂的问题简单化,提高代码的重用性维护性.

2.类

是现实事物的抽象,一组相关属性行为的集合

3.对象

是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

4.封装

是把对象的状态数据隐藏起来,在通过暴露合适的方法来允许外部程序修改对象的状态数据,JAVA的封装主要通过访问修饰符来实现.

5.继承

继承是通过复用已有的类,实现一种一般到特殊的从属关系,派生出来的新类被称为原有类的子类,原有类被称为父类/基类,子类可以从父类那里继承并且修改到非私有成员和方法,也可以自己扩展属于子类的方法.

6.多态

当同一个对象执行同样的方法时,实际上会呈现出不同的行为特征.JAVA允许父类或接口的引用,指向子类或具体实现类的对象,而程序调用的方法在运行时才动态绑定.

7.重载

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。

8.重写

  • 参数列表与被重写方法的参数列表必须完全相同。
  • 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。
  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。
  • 父类的成员方法只能被它的子类重写。
  • 声明为 final 的方法不能被重写。
  • 声明为 static 的方法不能被重写,但是能够被再次声明。
  • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。
  • 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。
  • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
  • 构造方法不能被重写。
  • 如果不能继承一个类,则不能重写该类的方法。

9.抽象类

  1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

    理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。

  2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

    理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。

  3. 抽象类中,可以有成员变量。

    理解:子类的共性的成员变量 , 可以定义在抽象父类中。

  4. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

    理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。

  5. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。

    理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。

10.接口

  • 接口中每一个方法也是隐式抽象的,接口中的方***被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
  • 接口可以继承接口.且支持多继承接口,不能继承类.
  • jdk1.7新增,接口可以定义静态方法和默认方法,分别用static和default修饰,可以有方法体,default方法如果子类中出现同名方法,则优先类原则.

11.接口与抽象类

图片说明

图片说明

12.final

  • 类:被修饰的类,不能被继承。
  • 方法:被修饰的方法,不能被重写。
  • 变量:被修饰的变量,不能被重新赋值。

13. static

  • 是随着类的加载而加载的,且只加载一次。
  • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
  • 它优先于对象存在,所以,可以被所有对象共享。
    图片说明

14.访问修饰符

图片说明
图片说明

15.内部类

  • 内部类可以直接访问外部类的成员,包括私有成员。
  • 外部类要访问内部类的成员,必须要建立内部类的对象。
  • 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
  • 内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和美元符号比如,Person$Heart.class
  • 匿名内部类:是内部类的简化写法。它的本质是一个带具体实现的 父类或者父接口的 匿名的 子类对象
    • 内部类执行顺序:静态代码块>构造代码块>构造函数>普通代码块
      图片说明

16 Native修饰符

  • 被native修饰的方法,非Java语言编写,是由C++语言编写。
  • 本地方法在运行时期进入本地方法栈内存,本地方法栈是一块独立内存的区域。
  • 本地方法的意义是和操作系统进行交互。

17 transient修饰符

修饰不用序列化属性