五.面向对象
5.封装
1.要求高内聚,低耦合。低耦合是指减少对其它类的依赖,高内聚是指调用的方法尽量写在本类中,对一个项目来说,就是减少第三方依赖;
2.封装的特点就是属性私有,通过get/set接口来获取属性;
6.继承
1.通过extends实现,子类 extends 父类;
2.private私有不被继承,子类无法使用,除私有外均可使用和重写;
3.所有类都默认继承object类;
4.super可调用父类参数或方法;
5.非静态方法重写中主要看左边的类,如A extends B ; B b=new A();b.test(),这里b调用的test方法是B类中的,父类可以指向子类,静态调用不管用,因为静态是类的方法,和类一起生成,那样b就是A一个new出来的对象而已;
6.super调用父类方法必须在构造方法的第一个,只能出现在子类方法或构造方法中,不能和this同时调用构造方法;
7.super和this的区别:代表对象不同,this代表调用者的对象,super代表父类对象的应用;前提不同,this不需要前提,super只能在继承条件下使用;构造方法不同,this是本类的构造,super是父类的构造;
8.重写需要继承关系,且是子类对父类的重写,需要注意1.方法名一致,2.参数列表一致,3.修饰符范围只能扩大,4.抛出的异常只能扩大,5.只是方法体不同;
7.多态
1.多态是属于方法的,属性没有多态;
2.若子类重写了父类方法,则调用父类该方法会执行子类的重写方法;
3.常量,私有,静态均不可重写;
4.instanceof(类型转换),用于检验2个类有无继承关系,如上述B instanceof A输出true;同阶级的子类用该方法会报错。子类父类也可进行类型转换,子转父自动,反之强制,转换带括号(B)A;
8.抽象类
1.abstract修饰抽象类;
2.抽象类可以没有抽象方法(abstract修饰的方法),但抽象方法一定存在在抽象类;
3.抽象类不能使用new来创建对象,只能让子类继承;
4.抽象方法只是方法的声明,不存在方法体实现,只能通过子类实现;
5.子类继承抽象类要实现抽象类的方法,不实现也要用abstract修饰该子类;
6.抽象类也存在构造器;
9.接口
1.抽象方法通过继承实现方法,且只能单继承,因此出现接口,接口可以多继承,更灵活,接口只是一个规范,不存在方法体;
2.接口类型为interface,继承为implements;
10.内部类
1.内部类有普通内部类(在public class内的一个 class),静态内部类(在普通内部类上加static修饰),局部内部类(在主类外一个class);
11.异常
1.一个完整的方法包括异常的捕获和抛出异常;
2.throw用在方法体中,throws用在方法头中;
3.异常也可自定义;