面向对象、封装、继承、多态(2) (一)引用变量类型转换 向上转型:父类名称 父类对象=子类实例(自动转型) 向下转型:子类名称 子类对象=(子类名称)父类实例 对象的类型和类必须有继承关系。 (二)基本数据类型类型的装箱与拆箱 自动装箱:将一个基本数据类型直接赋给对应的包装类对象或Object对象 自动拆箱:将包装类对象直接赋给对应的基本数据类型。 String类:与基本数据类型的转换提供方法:parseXX(); (三)单例Singleton模式 目的:整个应用程序有且只有一个实例,所有指向该类型实例的引用都指向这个实例。 饿汉式:static修饰,随类的加载而加载,会损耗性能,但方法简单 Class Singleton{ Private static final Singleton s=new Singleton() Private Singleton(){} Public Singleton getInstance(){ Return s; } } 懒汉式:第一次引用时相对较慢,因为需要加载,线程不安全。 Class Singleton2{ Private static Singleton2 s=null; Private Singleton2(){ S=new Singleton2(); } Public Singleton getInstance(){ Return s; } } (五)final关键字 1、final可以修饰类,方法、变量。 2、修饰的类不可以被继承,但可以继承其他类 3、修饰的方法不可被覆写。 4、修饰的变量为常量,不可改变 5、内部类在局部时,只可以访问被final修饰的局部变量。 (六)接口与抽象类 抽象类:被abstract修饰,别abstract修饰的抽象方法,只能方法名和返回值类型,不能有方法体。 接口:抽象类是从多个类中抽象出来的模板,若将这种抽象进行的更彻底,就得到一种 特殊的“抽象类”,即接口 相同点:都是位于继承的顶端,用于被其他继承或实现 都不能实例化 都包含抽象方法,其子类必须覆写这些抽象方法。 (七)匿名内部类 适合只使用一次的类; 不能是抽象类,匿名内部类不能定义构造器,因为匿名内部类没有类名。 (八)枚举 enum 使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类 枚举类的对象是固定的,实例个数有限,不可以再new(); 枚举元素必须位于枚举类的最开始部分, Private修饰枚举类的构造方法 枚举类覆写接口抽象方法的两种方式: 在枚举类中实现接口的抽象方法 在枚举匿名内部类中实现接口的抽象方法。
|