1.面向对象三要素:封装,继承,多态
- 封装将数据,和方法整合到了一起
- 继承解决了一些相似类之间的关系问题
- 组合更像是叠加
- 继承类似于融合
- 多态可以让子类覆盖父类方法
2.枚举
- 枚举类,必须在开始的时候常见枚举对象,且继承自enum类
- 构造方法必须是private,不写默认也是
- 除此之外 枚举类和 其他类并没有什么特殊之处
- 枚举类的常见方法
- Category.values():返回所有的枚举对象,其实就是返回一个数组
- category.ordinal():返回枚举对象的序号 从0开始
- category.name():返回对象名字
- Category.valueOf(String name):通过字符串 返回枚举对象
3.接口:让商品类型更加丰富(上)
- 接口的定义 使用的是 interface ,而非class
- 接口中的方法,就是这个类型的规范,接口专注于规范
- 接口无法被实例话,也就是说不可以new一个接口的实例
- 接口里的方法都是public abstract修饰的,方法有名字,参数 和返回值 没有方法体
- public abstract可以省略,abstract就是 抽象方法的修饰符,没有方法体,以分号结束
- 接口里不能定义局部变量,定义的变量 默认都是 public static final ,同样可以省略
4.接口:让商品类型更加丰富(下)
一个类只能继承一个父类,但是可以实现多个接口
一个类实现接口,就是从接口继承了抽象方法
可以用实现接口的类的引用,给接口的引用赋值,类似于,子类的引用给父类引用赋值
如果,实现的接口里定义了一样的方法,那么也没问题,但是要求i方法名,参数,返回值相同
接口继承
- 接口可以继承接口,接口可以继承多个接口,接口之间的继承要用extends
- 继承的接口可以有重复的方法看,但是签名相同时,返回值必须相同
5.抽象类:接口和类的混合体
- 抽象类用abstract修饰,抽象类可以继承别的类或者抽象类,也可以实现接口
- 抽象类可以有抽象方法,可以来自实现的接口,也可以自己定义
- 抽象类不可以被实例化 抽象类中可以 定义 成员变量
- 抽象类也可以没有抽象方法,没有抽象方法的抽象类,也不可被实例化
- 简单来说,抽象类就两个特殊:1.被abstract修饰,可以有抽象方法2.不可以被实例化
6.有方法代码的接口
- 在java 8 中 ,接口允许有缺省的实现抽象方法
- 接口口中可以 有私有方法,不需要用default修饰
- 接口中的私有方法,可以认为是代码直接插入到使用的地方
7.接口代码的更多内容
- 接口中可以有静态方法,不需要default修饰,静态方法可以被实现接口的类继承
- 接口中的方法不代表java可以多继承
- 接口方法中的this自引用,实际上是实现类的,对象
- 一个类不可从两个接口中获得相同的缺省方法
实现由缺省方法的接口之后,对每个缺省的方法,一个类可以由三选择
- 默默继承,相当于把这部分代码,拷贝到当前类中
- 重新声明此方法为abstract,相当于把这部分代码拒之门外,但是这个类也必 须是abstract
- 覆盖,重新实现
8.静态内部类
- 静态内部类,是在类中使用static修饰的类
- 静态内部类,可以有访问控制符,静态内部类和静态方法,静态变量一样,都是类的静态组成部分
- 静态内部类也可以是类,在继承,实现接口方面,都是一样的,以后我们讲的类,不特殊说明,在这方面都是一样的
- 静态内部类是静态的,就好像静态方法一样,没有this自引用,可以通过引用访问对象的private属性
- 静态内部类,里面可以有任意合法的类的组成部分,包括静态内部类
- 同样外部类,亦可以访问静态内部类(CPU)的private属性
- 静态内部类,不会过早的初始化
9.成员内部类
- 成员内部类,是在类中直接定义类
- 成员内部类,不可以包含任何静态的成分,比如静态方法,静态变量,静态内部类,否则会造成内外部类初始化问题(可以有final static的基本数据类型变量)
- 成员内部类,可以有访问控制符。成员内部类和成员变量,成员方法一样,都是类的组成部分
- 成员内部类,代码和这个类本身的访问权限一样可以访问外部的private属性、
- 成员内部类中有一个外部类的引用,其访问外部类的对象的成员属性,就是用这个引用:类名.this.成员
- 成员内部类:里面可以有任意合法的类的组成部分,包括成员内部类,但是不可以有静态内部类
- 如果在成员外部创建内部类的对象,就需要指定这个引用是谁
10.局部内部类
- 接口也可以定义为 静态内部接口
- 但是一般并不会这样做接口的目的是让更多人实现
- 局部内部类,是在类中直接定义类
- 局部内部类,不可以包含任何静态的成分,比如静态方法,静态变量,静态内部类否则会造成内外部类初始化问题
- 局部内部类。不可以有访问控制符,局部内部类和成员方法,成员变量一样都是类的组成部分
- 可以 有final static的基本数据类型
- 局部内部类,代码和这个类本身的访问权限一样,可以访问外部的private属性
- 局部内部类中有一个外部类的引用
- 局部内部类访问外部类的成员属性的写法:类名.this.属性/方法
- 以上和成员内部类一样。除此之外局部内部类还可以访问参数和局部变量,但是他俩必须是实际final的
- 局部内部类,就好像局部变量一样,方法内部的东西出了代码就不可访问了
- 所以可以再定义类,但是不能有访问控制符,也不能有static,就好像成员变量没有访问控制符一样
- 但是可以有final。记忆要点:和局部变量一样