------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------
抽象类
抽象类的特点:
1. 抽象方法一定要再抽象类中
2. 抽象方法和抽象类都必须被abstract关键字修饰
3. 抽象类不可以用new穿件对象.因为调用抽象方法没意义.
4. 抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类
例如:
abstract class A//抽象类
{
abstract void show();//抽象方法
}
class B extends A
{
void show(){}
}
抽象类和一般类没什么大的区别,该如何描述事物就如何描述事物,只不过,该事物出现了一些看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象
练习:假如我们在开发一个系统时需要对员工进行建模:员工包含三个属性:姓名,工号以及工资,经理也是员工,除了含有员工的属性外,还有另一个奖金属性.请使用继承的思想设计出员工类和经理类.要求类中提供必要的方法进行属性的访问
模版方法:
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,有该类的子类去完成
例子:获取一段程序运行的时间
接口
格式:interface {}
接口中的成员修饰符是固定的
成员常量: public static final
成员函数: public abstract
接口的出现将"多继承"通过另一种形式体现出来,即"多种实现";
接口也可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.
class用于定义类
interface用于定义接口
接口是不可以创建对象的,因为有抽象方法.
需要被子类实现,子类对接口中的抽象方法全都覆盖后,才可以实例化,否则子类还是一个抽象类
一个类可以实现多个接口
interface Inner
{
public abstract void run();
}
interface Inter
{
public abstract void show();
}
class Test
{
}
class Demo extends Test implements Inner,Inter
{
public abstract void run(){}
public abstract void show(){}
}
接口的特点
接口是对外暴露的规则
接口是程序的功能的扩展
接口可以用来多实现
类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
接口与接口之间可以有继承关系
多态
多态的定义:某一类事物的多种存在形态
例如: 动物中猫, 狗
猫这个对象对应的类型是猫的类型 猫 想= new 猫();
同时猫也是动物的一种,也可以把猫称为动物 动物 y = new 猫(); 父类型引用指向了子类对象
动物是猫和狗具体事物中抽取出来的父类型
多态的体现
父类引用指向了自己的子类对象
父类的引用也可以接受自己的子类对象
多态的前提
必须是类与类之间有关系.要么继承,要么实现
通常还有一个前提:存在覆盖
多态的好处
多态的出现大大的提高了程序的扩展性
多态的弊端
提高了扩展性,但是只能使用父类应用访问父类中的成员
练习:基础班学生:::学习, 睡觉
高级班学生:::学习, 睡觉
在多态中成员函数的特点
在编译时期:参阅引用型变量所属的类中是否有调用方法.如果有,编译通过,如果没有,编译失败
在运行时期:参阅对象所属的类中是否有调用的方法
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边
在多态中,成员变量的特点:
无论编译还是运行,都参考左边(引用型变量所属的类)
在多态中,静态成员函数的特点
无论编译还是运行,都参考左边
多态主板示例: