class Person{}
class Student extends Person{}
public class Test {
public static void main(String[] args) {
//这是一个父类引用指向子类对象
Person p=new Student();
int b=0;
//这是一个double类型里面放int
double i=b;
//Student继承了Person的非私有成员并能扩展。那就说明Student所占的空间可能要比Person大
//那为什么p指向Student对象为什么不是强转?不是很懂这个原理
//不应该是小的转大的就自动转,大的转小的就强转么
//比如 int 转 double
//一直想不明白多态的内部是如何实现的,求大神解答一下他是怎么运作的
}
}
class Student extends Person{}
public class Test {
public static void main(String[] args) {
//这是一个父类引用指向子类对象
Person p=new Student();
int b=0;
//这是一个double类型里面放int
double i=b;
//Student继承了Person的非私有成员并能扩展。那就说明Student所占的空间可能要比Person大
//那为什么p指向Student对象为什么不是强转?不是很懂这个原理
//不应该是小的转大的就自动转,大的转小的就强转么
//比如 int 转 double
//一直想不明白多态的内部是如何实现的,求大神解答一下他是怎么运作的
}
}
//int b=0;
}
class Student extends Person{}
class Student2 extends Person{}
public class Test3 {
public static void main(String[] args) {
//这是一个父类引用指向子类对象
Person p=new Student();
int b=0; //person的变量放在person类里面
//这是一个double类型里面放int
double i=b;
//Student继承了Person的非私有成员并能扩展。那就说明Student所占的空间可能要比Person大
//那为什么p指向Student对象为什么不是强转?不是很懂这个原理
Student s = (Student) p;//强转,--父类和子类当然是父类大了,子类来源于父类,子类转换成父类直接转,父类有很多子类,转换成其中一个子类,要强制转
//不应该是小的转大的就自动转,大的转小的就强转么
//比如 int 转 double
Person p2=new Student();//Person有两个子类
Student2 s2 = (Student2) p;//强转不合理的话会出现异常的 //一直想不明白多态的内部是如何实现的,求大神解答一下他是怎么运作的
}
}
你纸条比别人大,你抄他的东西肯定能抄完整;
你纸条比别人小就可能抄不下,这时候强制类型转换的意思就是抄不下的就不要了。但对于对象来说就不一样了,拿学校来说
学校里很多人,有老师,学生,有男学生,男老师是男人;女老师,女学生是女人;
校长喊来个人帮我抬下桌子,来了个女学生,这个反馈没有错,这个女学生也是一个人
妹子抬不动桌子,校长改口,来个男人帮我抬下桌子,这时候来了个男的体育老师,轻松搞定。
如果校长指明要英语系的女学生,那这个体育老师就只能一边去了