系列文章目录
例如:第四章 面向对象 :向上造型、重写
一、向上造型:
(1)超类型的引用指向派生类的对象.
//动物是动物
Animal o = new Animal();
//老虎是老虎
Tiger o = new Tiger();
//老虎是动物
Animal o = new Tiger();
//动物是老虎----语义不通
Tiger o = new Animal(); //编译错误
先建两个类:
class Animal{ //动物类
}
class Tiger extends Animal{ //老虎类---------继承要符合is a(是一个)的关系
}
(2)能点出来什么,看引用的类型-------这是规定,不需要理解
超类 派生类
Person p1 = new Student();
Person p2 = new Teacher();
Person p3 = new Doctor();
p1/p2/p3. 只能点出Person中的
超类 派生类
Animal o = new Tiger();
o. 只能点出Animal中的
代码如下(示例):
创建一个Person超类,student,teacher,Doctor三个派生类
二、方法的重写(Override):重新写、覆盖
当子类的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本
1)发生在父子类中,方法名相同,参数列表相同,方法体不同
代码如下(示例):这是学生类,子类
代码如下(示例):这是超类,父类
上面子类中的StuID是学生类所特有的属性, 要想输出学生类中的StuID的结果必须要重写方法,就是在学生类中添加一个与父类相同的方法,然后在方法体中加入需要输出的特殊属性就可以了
2)重写方法被调用时,看对象的类型—这是规定,不需要理解
代码如上图(示例):
3)重写遵循"两同两小一大"原则:-----------了解
3.1)两同:
3.1.1)方法名相同
3.1.2)参数列表相同
3.2)两小:
3.2.1)派生类方法的返回值类型小于或等于超类方法的
1)void时,必须相同
2)基本类型时,必须相同
3)引用类型时,小于或等于
3.2.2)派生类方法抛出的异常小于或等于超类方法的
3.3)一大:
3.3.1)派生类方法的访问权限大于或等于超类方法的
3.重写与重载的区别:
1)重写:
1.1)发生在父子类中,方法名相同,参数列表相同,方法体不同
必须是父子类中
1.2)遵循"运行期绑定",看对象的类型来调用方法
2)重载:
2.1)发生在同一类中,方法名相同,参数列表不同,方法体不同
2.2)遵循"编译期绑定",看参数/引用的类型来绑定方法
代码如下(示例):例一
代码如下(示例):例二