一、面向对象之封装
1. 面向对象的三个特征是:封装、继承和多态。
2. Java开发过程:要实现某个功能,首先要找能够实现这个功能的对象,如果没有找到,就自己造一个对象,将要实现的功能定义到对象中,这样以后就可重复利用这个对象。最后,要不断维护对象间的关系。
3. 类和对象的关系:类就是对现实生活中事物的描述,是对具体的抽象;对象就是这类具体的事物,是实实在在存在的个体。
4. 匿名对象的使用方式:对象的方法只调用一次;作为实际参数进行传递。
5. 封装的原则:把不需要对外提供的内容,都隐藏起来;把属性都隐藏,提供公共方法对其访问。
6. 构造代码块:给所有对象进行统一初始化,优先于构造函数运行。
7. 构造函数间的调用,必须使用this关键字,并且必须是构造函数中的第一个语句。
8. static修饰符特点:随着类的加载而加载;优先于对象存在;被所有对象共享;可以直接被类名所调用。
9. 静态代码块:随着类的加载而加载,且只运行一次。
10. 对象加载到内存的过程:静态代码块 -> 构造代码块 -> 构造函数。
11. 实现单力设计模式的两种方式:饿汉式(先初始化对象);懒汉试(延迟加载)。开发时,如果需要将一个类设计成单例,优先使用饿汉式。
二、面向对象之继承
1. 继承的作用:提高了代码的复用性;类与类之间产生了关系,有了这个关系,才有了多态的特性。
2. Java语言支持单继承,支持多层继承吗,而不支持多继承,因为多继承容易带来安全隐患。
3. 使用继承体系的功能:查阅父类功能,创建子类对象使用功能。
4. 子类覆盖父类中的方法,必须保证子类的方法的访问权限大于或等于父类方法的访问权限。
5. 在对子类对象进行初始化时,父类的构造方法也会运行,这是因为在子类的所有构造函数中,默认的第一行,都有一条隐式语句super();。并且,super语句一定要放在子类构造函数的第一行。
6. final关键字:final修饰的类不可以被继承;final修饰的方法不可以被覆盖;final修饰的变量是一个常量,只能被赋值一次;内部类只能访问被final修饰的局部变量。
7. 抽象类的特点:抽象方法必须在抽象类中;抽象类不可以用new创建对象;抽象类中的方法要被使用,必须由子类覆写所有的抽象方法,建立子类的对象调用。如果子类只覆写了父类的部分抽象方法,那么这个子类也是抽象类。
8. 模板方法:在定义功能是,功能的一部分是确定的,一部分是不确定的,而且确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由子类去完成。
9. 接口的特点:对外暴露的规则;程序的功能拓展;可以多实现;接口和接口之间可以多继承。
三、面向对象之多态
1.
多态的定义:某一类事物的多钟存在形式。
2.
多态的代码体现:父类的引用指向子类的对象,叫做向上转型。这时,如果想要调用子类特有的方法,需要将父类引用强制转换成子类类型,叫做向下转型。
3. 多态的作用:提高了程序的可拓展性和后期可维护性。
4. 多态的前提:需要存在继承或者实现的关系;需要有覆盖操作。
5. 内部类访问规则:内部类可以直接访问外部类的成员,包括私有成员(这是因为内部类中持有一个外部类的引用);外部类要想访问内部类的成员必须要建立内部类的对象。
6. 当内部类中定义了静态成员,该内部类必须是静态的;当外部类的静态方法访问内部类中的成员时,该内部类也必须是静态的。
四、面相对象之异常
1. 异常划分:严重异常,java通过Error类进行描述,一般不写针对性代码对其进行处理;非严重异常,java通过Exception类进行描述,可以使用针对性代码对其进行处理。
2. Throwable类是java中所有错误或异常的超类。
3. 异常的处理语句:try{...} catch{...} finally{...}。catch语句中要定义具体的异常,而不要用Exception。
4. 自定义异常:因为父类已经完成异常信息的操作,所以子类只要在构造时,将异常信息传递给父类(super),那么就可以直接通过getMessage()方法获取自定异常的信息。
5. throws和throw区别:throws使用在函数上,throw使用在函数中;throws后面跟的是异常类,可以有多个,而throw后面跟的是一个对象。
6. 抛出编译时异常(继承Exception),需要在方法上声明该异常。抛出运行时异常(继承RuntimeException)不需要在方法上声明,因为发生运行时异常时,程序无法继续执行。
7. 自定义异常时,如果异常发生,程序无法继续执行,就让自定义异常继承RuntimeException。如果发声异常,经过处理后程序可以继续运行,就让自定义异常继承Exception。
8. finally代码块中定义一定要执行的代码,通常用于关闭资源。当程序执行到System.exit(0)时,finally不会被执行。
9. 子类不能比父类抛出更多的异常。