day8 Java学习(面向对象.多态&接口)
面向对象
多态:
概述:事物存在的多种形态。
多态前提:
*要有继承关系
*要有方法重写
*要有父类引用指向子类对象。
成员变量访问:
编译看左边(父类),运行左边(父类)。
成员方法访问:
编译看左边(父类),运行右边(子类)。//动态绑定
多态静态方法:
编译看左边(父类),运行看左边(父类)。
多态向上转型:父类引用指向子类。
*必须先有向上转型才有向下转型。
Father p =new son(); (向上转型)
son p1= (son) p;( 向下转型)
多态的好处:
*提高了代码的维护性(继承保证)
*提高了代码的扩展性(由多态保证)
多态的弊端:
* 不能使用子类的特有属性和行为。
面向对象(抽象类)
抽象类的概述:
*抽象就是看不懂的
抽象类特点:
1.抽象类和抽象方法必须要用abstract关键字修饰
*abstract class 类名 { };
* public abstract void eat();
2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口。
3.抽象类如何实例化?
* 按照多态的方式 ,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
4.抽象的子类
*要么是抽象类
*要么重写抽象类中的所有抽象方法。
抽象类的成员特点:
1.成员变量:既可以是变量,也可以是常量。
*abstract不能修饰成员变量。
2. 构造方法:有。
3.成员方法:既可以是抽象的,也可以是非抽象的。
4.抽象类的成员方法特性:
*抽象方法 (强制要求子类做的事情)
*非抽象方法 (子类继承的事情,提高代码的复用性)。
面向对象( 接口)
接口概述:
* 冲狭义的角度讲就是指Java中的interface。
* 冲广义的角度讲对外提供规则的都是接口。
接口特点:
* 接口用关键字Interface表示
*interface 接口名 { }
* 类实现接口用implements表示
*class 类名 implements 接口名 { }
* 接口不能实例化
*那么如何实例? (按照多态的方式来实现)
* 接口的子类
*可以是抽象类,但是意义不大
*可以是具体类。要重写接口中的所有抽象方法(推荐方案)。