IDEA快捷方式:
- Shift+Alt+PgUp 向上移动选择代码
- Shift+Alt+PgDn 向下移动选择代码
static关键字:
- static修饰成员变量时,成员变量被所有对象共享,可以使类名调用,也可以使用对象名调用
- static修饰成员函数,多用于测试类和工具类,可以类名调用,也可以对象名调用
类的分类:
- Javabean类:用来描述一类事物的类
- 测试类:用来检查其他类是否书写正确
- 工具类:不是用来描述一类事物,而是帮我们做一些事情的类
-
- 类名见名知意
- 私有化构造方法
- 方法定义为静态
static的注意事项:
- 静态方法只能访问静态变量和静态方法
- 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
- 静态方法中是没有this关键字
继承:public class son extends parent {}
继承的好处:
- 可以把多个子类中重复的代码抽取到父类中,提高代码复用性
- 子类可以在父类的基础上,增加其他的功能,使子类更强大
Java继承特点:只支持单继承,不支持多继承,但是可以多层继承,所有类都直接或者间接继承Object类
Java子类可以继承的内容:
- 构造方法都不能继承
- 成员变量都能继承,private修饰的变量不能直接使用
- 不能继承private修饰的成员方法
this与super关键字:
- this调用本类中的方法
- super调用父类的方法
方法的重写:当父类的方法不能满足子类现在的需求时,需要进行方法重写。格式:子类和父类方法声明相同
@Override重写注解:
- @Override是放在重写后的方法上,检验子类重写时语法是否正确
- 加上注解后如果有红色波浪线,表示语法错误
- 建议重写方法都加@Override注解
方法重写注意事项:
- 重写方法的名称,形参列表必须与父类的一致
- 子类重写父类方法时,访问权限子类必须大于等于父类
- 子类重写父类方法时,返回值;类型必须小于等于父类
- 重写的方法尽量和父类保持一致
- 私有方法不能被重写
- 子类不能重写父类的静态方法,否则会报错
继承中构造方法的访问特点:
- 子类不能继承父类的构造方法,但是可以通过super调用
- 子类构造方法的第一行,有一个默认的super();
- 默认先访问父类中无参的构造方法,再执行自己
- 如果想要访问父类有参构造,必须手动书写
多态:同类型的对象,表现出的不同的形态。前提:有继承关系;有父类引用指向子类对象;有方法重写
多态调用成员的特点:
- 调用成员函数:编译看左边,运行看左边
- 调用成员方法:编译看左边,运行看右边
多态的优势:
- 在多态形势下,右边对象可以实现解耦合,便于拓展和维护
- 定义方法的时候,使用父类型作为参数,可以接受所有的子类对象,体现多态的扩展性与便利
多态的弊端:不能调用子类的特有功能
final关键字:
- 表明方法是最终方法,不能被重写
- 表明类是最终类,不能被继承
- 叫做常量,只能被赋值一次
权限修饰符:
- private:只能自己用
- 空着不写(缺省/默认):只能本包中能用
- protect:其他包的子类也能使用
- public
代码块:
- 局部代码块:
- 构造代码块:
- 静态代码块:
抽象类:
- 使用abstract修饰类
- 抽象类中可用abstract修饰方法,这种方法叫抽象方法
- 继承抽象类的子类必须重写抽象方法
抽象类注意事项:
- 抽象类不能实例化
- 抽象类中不一定有抽象方法,有抽象方法一定是抽象类
- 可以有构造方法
- 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类
接口得定义和使用:
- 接口用关键字interface来定义,public interface 接口名{}
- 接口不能实例化
- 接口和类之间是实现关系,通过implements关键字表示,public class 类名 implements 接口名{}
- 接口的子类要么重写接口中所有的抽象方法,要么是抽象类
- 借口和类的实现关系,可以单实现,也可以多实现。public class 类名 implements 接口名1,接口名2{}
- 实现类还可以在继承一个类的同时实现多个接口。public class 类名 extends 父类 implements 接口名1,接口名2{}
接口中成员的特点:
- 成员变量:只能是常量,默认修饰符:public static final
- 构造方法:无
- 成员变量:只能有抽象方法,默认修饰符:public abstract
接口和类之间的关系:
- 类和类之间:继承关系,只能单继承,不能多继承,但可以多层继承
- 类和接口之间:可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
- 接口和接口之间:继承关系,可以单继承,也可以多继承
JDK8以后接口中新增的方法:
- 允许在接口中定义默认方法,需要使用关键字default修饰。public default 返回值类型 方法名(参数列表){}
-
- 默认方法不是抽象方法,所以不强制重写
- 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
- default不能省略
- 允许在接口中定义静态方法,需要用static修饰。public static 返回值类型 方法名(参数列表){}
-
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
- public可以省略,static不能省略
- JDK9接口中新增私有方法。private 返回值类型 方法名(参数列表){};private static 返回值类型 方法名(参数列表){}
设配器设计模式:设计模式是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性和程序的重要性。
- 适配器设计模式是为了解决接口与接口实现类之间的矛盾问题。
- 使用情景:当一个接口中抽象方法过多,但只需要使用其他一部分的时候,就可以使用适配器
- 书写步骤:编写中间类XXXXAdapter,实现对应的接口,对接口中的抽象方法进行空实现,让真正的实现类继承中间类,并重写需要用的方法。
类的五大成员:
- 属性
- 方法
- 构造方法
- 代码块
- 内部类:在一个类的里面再定义一个类
内部类的访问特点:
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员,必须创建对象
内部类的分类:
- 成员内部类:写在成员位置的,属于外部类的成员。成员内部类可以被一些修饰符所修饰,如:private,默认,protected等
- 静态内部类:成员内部类使用static修饰
- 局部内部类:将内部类定义在方法里面
- 匿名内部类:隐藏名字的内部类。new 类名或者接口名(){ 重写方法; };