一. 基础
- 1.类、对象、方法
- 类是对象的集合,它描述一类对象的行为和状态
- java中万物皆为对象,对象具有行为和状态;比如小狗有颜色、皮毛等属性状态,也会吃饭、走路等行为;对象是类的具体实例。
- 状态即属性;行为即方法(对象与类的关系);
- 实例变量与成员变量:比如类Text下面定义一个static静态变量A和非static静态变量B,B需要Text实例化才可以访问:Text t = new Text() t.B;A不需要实例化直接Text.A。t.B称为实例化成员变量;Text.A 称类成员变量
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型
- 2.多态、继承、封装、抽象、组合、重载
- 继承:一个对象继承父类的所有属性和方法 称为继承;继承具有代码重用性;extends
- 支持单继承、不支持多继承 即不支持类A同时继承A->B,A->C;
- 支持多重继承,即A->B->C
- 可以通过实现implements来实现多继承的特性。
- super实现对父类成员访问,引用当前对象的父类;this对当前对象的引用。
- 子类打印父类的成员变量,输出对象添加注解:@ToString(callSuper = true)或者JSON.toJSONString()
- 多态:多态是同一个行为具有多个不同表现形式或形态的能力。java中主要通过方法的重载与方法的覆盖来实现多态。
- 重载: 一个类中定义了多个同名方法,参数个数、顺序和类型不同,返回类型可不同;
- 重写: 子类存在方法与父类的方法的名字、参数类型及返回类型相同(提高方法的扩展性及灵活性)。
- 封装:将代码和数据一起封装到单个单元中的过程;javaBean类就是一个封装类,将属性通过private进行访问权限限制,只通过getter、setter方法进行供外部访问。这个过程就是封装。(控制成员变量,隐藏信息,实现细节、减少耦合)。
- 抽象:在java中用abstract关键字声明的类称为抽象类。
- 1.抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。非抽象类的子类可以实例化。
- 2.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 3.抽象类中的抽象方法只是声明,不包含方法体。
- 4.构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
- 5.抽象类的子类必须给出抽象类的抽象方法的具体实现,除非该子类也是抽象类。
- 接口:是抽象方法的集合,没有方法体。interface来声明。
- java不允许类实现多重继承是因为模糊(B、C继承了A的方法并覆盖,D继承了B、C方法并覆盖,那么D是继承B or C的覆盖方法?),但是类可以实现多个接口。(因为接口没有歧义)
- 抽象类与接口区别:
- 1.抽象类中有方法体,可以实现具体的方法;但接口中方法不行。(java8 接口中也可以定义default和static方法体 实现具体的方法)
- 2.一个类只能继承一
- 继承:一个对象继承父类的所有属性和方法 称为继承;继承具有代码重用性;extends