本帖最后由 风中的消逝 于 2018-4-23 15:20 编辑
【石家庄校区】就业班_JavaSE_day02_继承_final_抽象类
一 继承
1 概述 把具有相同成员变量和成员方法的类中相同的部分抽取出来形成一个新类,
然后这些类继承这个新类,从这个新类中继承这些相同的成员变量和成员方法。
代码表现形式
类继承 class A {} class B extends A {}
接口继承 interface A {} interface C{} interface B extends A ,C{}
2 特点
类与类之间:单继承, 子类继承父类全部成员,需要考虑父类成员的访问权限修饰符, private 修饰不能被继承
default 修饰 同一个包下 protected修饰 不同包的子类 public修饰 没有限制
接口与接口之间:多继承
3 同名成员变量的继承
就近原则 局部变量 -- 子类成员变量--父类成员变量
4 成员方法的继承
如果子类覆盖了父类方法 ,则调用子类重写后的方法。
5 方法重写 override
子类中权限修饰符>=父类中的; 子类中不能抛出比父类更大的异常
6.构造方法 不能被继承
7 this super 关键字
可以通过this 和super 来调用成员变量和成员方法 ;
也可以在构造方法中通过this() 和 super()来分别调用子类或者父类的构造方法,子类构造方法中默认调用super()
8 继承的优缺点
优点 提高代码的复用性 提高代码的可维护性
缺点 增加了类之间的耦合性
二 匿名对象和final关键字
1 匿名对象
没有名字的对象 ,没有引用指向的对象
2 final 可以用来修饰类、成员方法、变量 (包括成员变量和局部变量)。表示不可变。
修饰类 表示类不能被继承
修饰变量 表示常量
修饰成员方法 表示方法不能被重写
修饰变量时的注意事项
修饰基本类型 表示基本类型的值不能变
修饰引用类型 表示栈内存的中引用地址值不能变,但是堆内存中对象的属性是能够改变的。
final修饰变量 变量只能被显示赋值一次 ,默认赋值不算。
三 抽象类
1.概述
把猫狗类的共性抽取成动物类,这个动物类不是一个具体的事物,不应该能够new。
并且eat这个方法针对猫狗有不同表现形式,动物类不应该有具体实现,而只是给出一个申明,让猫狗类去
具体实现。java中把没有具体实现的方法定义为抽象方法,而具有抽象方法的类也必须被定义为抽象类。
2 注意
抽象类中不一定必须要有抽象方法;
抽象类中可以有成员变量、成员常量、 普通成员方法、构造方法。
抽象类不能实例化
3 abstract 关键字 不能与 final private static 共存
final和private 是因为不能被重写造成冲突
static是因为类名直接调用没有方法体的abstract方法 没有意义
4. 作用
规范子类 定义的抽象方法具体子类必须要实现
5. 模板方法 设计模式
|