Demo56_关于多态_较复杂

          输出类的代码如下
package com.oop.DuoTai_5;

public class Application {
public static void main(String[] args) {
//方法的输出与右侧关系不大,左侧的类名才是方法调用的关键
//右侧的类必须比左侧的类小或者相等
//例如:可以school school = new school();
//可以 Object school1= new school();
//不可以 Student school1= new school();
//Student能调用(实例化)的方法都是自己的或者继承的
Student s1= new Student();
//school可以指向Student,但是不能调用(实例化)子类
//school也是不能调用子类独有的方法
school s2 = new Student();
Object s3 = new Student();
//强制转换:将school转换为Student,这样子才能输出 eat方法,必须是继承关系才可以
//高转低就要进行强制转换
((Student) s2).eat();
s1.run();
s1.run1();
//例如
school school = new school();
Object school1= new school();
//子类与父类同时有run方法时,方法判定输出子类run方法
s1.run();
s2.run();
}
}
/*
多态的注意点:
1.多态只有方法的多态,属性没有多态
2.多态只能在有继承关系下才能使用,父类与子类
3.类型转换(实例化)时必须要有继承关系,否则就会转换异常 ClassException!
多态的存在条件:
1.继承关系
2.方法需要重写,如果两个方法名相同那么系统默认输出子类的方法
3.父类的引用指向子类对象
school s2 = new Student();
school的对象s2指向子类对象Student
课外:
1.static不能被重写,因为它是属于类,它不属于实例
2.final在常量池里,也是不能被重写的
3.privat是私有的,不能被重写

*/
代码输出的内容为:

 

                                      子类与父类的代码如下

 

 

 

 左侧就是引用类型,引用类型可以是父类或者本类,祖宗类,父类的引用指向子类,通过父类new自己的子类

原文地址:http://www.cnblogs.com/CHX249/p/16852905.html

发表评论

您的电子邮箱地址不会被公开。