包就是文件夹,管理各种不同的Java类。
● 使用同一个包中的类时,不需要导包。
● 使用java.lang包中的类时,不需要导包。
● 其他情况都需要导包
● 如果同时使用两个包中的同名类,需要用全类名。
final关键字可修饰方法、类、变量。
● 修饰方法:该方法为最终方法,不能被重写;
● 修饰类:该方法为最终类,不能被继承;
● 修饰变量:只能赋值一次,不能更改,其实也就是常量。
常量:
实际开发中,常量一般作为系统的配置信息,方便维护,提高可读性。
命名规范:
final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,对象内部的可以改变。
权限修饰符:是用来控制一个成员能够被访问的范围的。
可以修饰成员变量,方法,构造方法,内部类。
用大括号括起来的范围。
作用:提前结束变量的生命周期
定义:写在成员位置的代码块。
作用:可以将多个构造方法中重复的语句抽取出来。
执行时机:在创建本类对象时会先执行构造代码块的内容,再执行构造方法。
格式:static{}
特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次。
使用场景:在类加载的时候,做一些数据初始化的时候使用。
修饰词:abstract。
作用:
抽取共性时无法确定方法体,就把该方法写成抽象的,强制让子类进行重写。
● 抽象方法:将共性的行为(方法)抽取到父类之后。
由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。
该方法就可以定义为抽象方法。
● 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类。
定义格式:
抽象方法:public abstract 返回值类型 方法名(参数列表)
抽象类: public abstract class 类名{}
抽象类和抽象方法的注意事项:
● 抽象类不能实例化(创建对象);
● 抽象类中不一定有抽象方法,有抽象方法的类-定是抽象类;
● 可以有构造方法;
● 抽象类的子类:
- 要么重写抽象类中的所有抽象方法
- 要么是抽象类
abstract在对方法体不确定时进行修饰,侧重于该类事物的性质。而接口更偏向于是对行为的“抽象”。
允许在接口中定义默认方法,需要使用关键字default修饰
作用:解决接口升级的问题
接口中默认方法的定义格式:
允许在接口中定义定义静态方法,需要用static修饰
接口中静态方法的定义格式: public static返回值类型方法名(参数列表){ }
范例: public static void show(){ }
接口中静态方法的注意事项:
① 静态方 法只能通过接口名调用,不能通过实现类名或者对象名调用
② public可以省略, static不 能省略
允许在接口中定义私有方法:
格式1: private 返回值类型方法名(参数列表){ }
范例1: private void show(){ }
格式2: private static返回值类型方法名(参数列表){ }
范例2: private static void method() { }
1.当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式
2.书写步骤:
编写中间类XXXAdapter,实现对应的接口;
对接口中的抽象方法进行空实现,让真正的实现类继承中间类,并重写需要用的方法;
为了避免其他类创建适配器类的对象,中间的适配器类用abstract进行修饰。
类的五个成员:属性、方法、构造方法、代码块、内部类。
内部类就是在一个类内,再创建的一个类。将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。
内部类是外部类的一部分,且单独出现时没有意义。
① 内部类可以直接访问外部类的成员(包括私有的);
② 外部类不能直接访问内部类的成员,必须创建对象。
内部类分为:成员内部类、静态内部类、局部内部类、匿名内部类四种。前三种均属于了解内容,可能在源码中才会看。
使用格式:外部类.内部类
获取成员内部类对象:
① 外部类.内部类 变量 = new 外部类().new 内部类();
② 在外部类中定义一个方法提供内部类的对象。
编写成员内部类的注意点:
属于成员内部类的特殊情况。有static修饰,属于外部类本身的。
使用格式:外部类.内部类
创建静态内部类的对象:部类.内部类 变量 = new 外部类.内部类构造器;
调用非静态方法的格式:先创建对象,用对象调用
调用静态方法的格式:外部类名.内部类名.方法名();
局部内部类:定义在方法中的类。
匿名内部类 :是内部类的简化写法。他是一个隐含了名字的内部类。
格式:
new 类名或者接口名() {
重写方法;
};
包含了:
整体就是一个类的子类对象或者一个接口的实现类对象。