java编程的逻辑读书笔记——第五章

类的扩展

接口和抽象类

  1. interface 声明接口
  2. implements实现接口
  3. 接口约定的是功能,而不是具体实现
  4. 接口中方法的默认修饰符为public abstract
  5. 接口中变量的默认修饰符为public static final
  6. 接口不能创建对象,但是接口可以作为引用类型,将其实现类的对象赋值给接口
  7. 一个类可以实现多个接口
  8. 一个接口可以继承多个接口
  9. 一个类可以同时实现接口并且继承类,关键字extends要放在implements前面
  10. JAVA8允许在接口中存在静态方法和默认方法(default修饰)(JAVA9规定这两种方法都可以使用private修饰)
  11. 实现接口必须实现其所有的抽象方法,因为普通类中不能包含抽象方法
  12. 继承抽象类必须实现抽象类的所有抽象方法,除非该类也是抽象方法
  13. 抽象类中可以包含具体方法和实例变量,他和具体类的区别是,抽象类不能创建对象
  14. 接口定义能力,抽象类提供默认实现,实现全部或者部分方法,减少子类要实现的方法。
  15. 抽象类可以实现接口中的方法,也可以不实现。
  16. 抽象类和接口中的方法,最终都必须进行实现

内部类

  1. 静态内部类
    1)静态内部类可以有静态变量和实例变量,静态方法和实例方法,构造方法。静态内部类只能可以访问外部类的静态变量和静态方法。
    2)为什么不能访问实例变量和方法,因为静态内部类会随着类的加载而加载,当他调用实例方法的时候,实例方法可能还没有进行初始化,所以不能
    3)public的静态内部类可以被其他类使用。 外部类.静态内部类
    4)静态内部类最终会生成: 外部类$静态内部类
  2. 成员内部类
    1)成员内部类创建需要通过外部类对象来创建
    Base b = new Base();
    b.Inner i = b.new Inner();
    2)成员内部类和外部类对象绑定,不能访问外部类静态变量和静态方法,因为静态变量和静态方法和类本身绑定,是独立使用。
  3. 方法内部类
    1)方法内部类只能再该方法中使用
    2)方法是实例方法,方法内部类可以访问外部类的静态方法和变量,实例方法和变量
    3)方法内部类还可以访问方法的参数以及局部变量,只不过得用final修饰,再java8之后,可以不用final修饰,不过该变量不能呗重新赋值,否则会编译出错
    4)方法内部类的实现原理
    将方法内部类单独分离成一个类,将使用到的方法中的参数作为该类的成员变量,将外部类对象作为该类的成员变量,使用到的外部类变量在外部类中创建方法来获取,创建带参的构造方法;把方法中的操作进行封装,存在于该类中;再方法中声明并调用该类中的方法。
  4. 匿名内部类

枚举

public enum Size{
	SMALL, MEDIUM, LARGE
}
public enum Size{
	SMALL("S", "小号");
	MEDIUM("M", "中号");
	LARGE("L", "大号");
	private String abbr;
	private String title;
	//getter setter方法省略
}
  1. int ordinal() //表示枚举在声明时的顺序
  2. valueOf(String str) //返回字符串对应的枚举值
  3. toString() //返回当前枚举对应的字符串

猜你喜欢

转载自blog.csdn.net/weixin_42424720/article/details/84566693