1、继承
代码块:
局部代码块 -- 限制变量生命周期
构造代码块 -- 减少构造方法中的重复代码
静态代码块 -- 随着类的加载就会执行,只执行一次。 -- 加载驱动(JDBC -- "贾琏预执事")
2、继承
extends
特点:
单继承,不允许多继承,允许多重继承
继承,不能继承父类的私有成员。
this和super
this -- 代表本类对象的引用
super -- 理解父类对象的引用
成员变量:-- 就近原则
this.变量名
super.变量名
构造方法:
this(参数...) 根据参数匹配调用本类的构造方法
super(参数...)根据参数匹配调用父类的构造方法
-- 保证父类的成员能先初始化
成员方法:
重写 -- 在子父类间,产生了方法声明完全一致的方法。
-- 访问权限修饰符,子类要大于等于父类的。
final:
修饰变量 -- 常量
修饰类 -- 不能被继承String
修饰方法 -- 不能被重写
二、多态
1、多态概述
多态:事物在不同时刻表现出来的不同状态。(父类子对象)
Animal a = new Cat(); // 语法
前提:
要有继承(实现)关系。
要有方法的重写(或者实现)。
要有父类的引用指向子类的对象。
2、多态中成员变量的访问特点:
编译看左边,运行也是看左边。 -- 成员变量没有重写的概念。
3、多态中成员方法的访问特点
非静态
编译看左边,运行看右边。 -- 成员方法存在着重写的概念。
静态:
编译看左边,运行也是看左边。
4、多态中,父类引用指向子类对象。父类的引用不能使用子类特有的方法。
解决:向上转型和向下转型。
Animal a = new Cat(); // 隐含着一个向上转型。
Cat c = (Cat) a; // 向下转型
5、多态的好处
好处
维护性
扩展性
弊端:
父类的引用不能使用子类特有的属性或者行为。
解决:向下转型。
注意:类型转换异常 -- 向下转型只能转成对象本来就是的那个类型或者其父类型。
三、抽象类
抽象方法 -- 只有方法声明,没有方法体。用abstract修饰。
抽象类 -- 用abstract修饰。不允许实例化对象。
特点:
抽象类里面可以有抽象方法,还可以有非抽象的方法。还可以没有抽象方法。
但有了抽象方法的类,必须声明成抽象的。
一个类继承自抽象类:
要么继续抽象
要么就必须重写(实现)所有的抽象方法。
抽象类的成员特点:
成员变量:可以是变量,可以是常量。
构造方法:有。 -- 子类访问父类成员之前,保证父类的数据初始化。
成员方法:
可以抽象的 -- 强制子类必须做某些事情,相当于给子类定义了规则。
可以是非抽象的 -- 直接供子类继承,提高代码复用性。
抽象类里面可以没有抽象方法:
为了不允许其他类创建对象。 -- 适配器模式
abstract不能共存的关键字:
final
static
private
四、接口
java语言中,接口是用interface声明的。不是一个类。更象是一种规则的体现。
类实现接口:
class 类名 implements 接口名 {}
要么全部实现接口中的抽象方法,
要么继续抽象。
接口也不能初始化对象。
接口中的成员特点:
成员变量:只能是常量。默认修饰符:public static final
构造方法:没有。
成员方法:只能是抽象方法。默认修饰符:public abstract
重点题目:抽象类与接口的区别
A:成员特点:
抽象类:
成员变量:
可以是变量,可以是常量.
构造方法:
有构造方法,用来对父类数据进行初始化.
成员方法:
可以有抽象方法 -- 要求子类做某些事情
可以有非抽象方法 -- 供子类继承.
接口:
成员变量:
全部都是常量.默认修饰符: public static final
成员方法:
全部都是抽象方法.默认修饰符: public abstract
B:关系特点:
类与类:
继承关系,只能单继承,但是可以多层继承.
类与接口:
实现关系.可以单实现, 可以多实现.
还可以在继承一个类的同时实现多个接口. -- 接口的多实现弥补了类单继承的局限性。
接口与接口:
继承关系, 可以单继承也可以多继承.
C:设计理念的区别:
抽象类定义的是系统的共性内容,体现的是 is a 的关系.
接口定义的是系统的扩展功能, 体现的是 like a 的关系.
|
|