//x是参考数据类型 如果赋值号右边是x的子类类型的变量,则进行自动类型转换;如果赋值号右边是x的父类类型的变量,
而且这个变量已经事先用x的对象赋值了,那么此时对右边的变量强制类型转换;
正确转化1——子类变量给父类变量赋值
class convert1{
public static void main(String args[]){
Student s;
Collegian c;
c=new Collegian("23","张三",“计算机");
s=c;
showInfo(s);
}
static void showInfo(Student s){
System.out.println("学号”+s.studentNo);
System.out.println("姓名”+s.name);
if(s instanceof Collegian){
System.out.println("专业”+((Collegian)s).major);
} }
错误转化——父类变量给子类赋值(本例编译出错,父类类型的变量不能给子类赋值)
class convert2{
public static void main(String args[]){
Student s;
Collegian c;
s=new Student("234","张三");
c=s;
showInfo(c);
}
static void showInfo(Student s){
System.out.println("学号:”+s.studentNo);
System.out.println("姓名:”+s.name);
if(s instanceof Collegian){
System.out.println("专业”+(((Collegian)s).major);
错误转化——指向父类对象的变量强制转化为子类类型
class convert3{
public static void main(String args[]){
Student s;
Collegian c;
s=new Student("232",“张三”);
c=(Collegian)s;
showInfo(c);
}
static void showInfo(Student s){
System.out.println("学号:”+s.studentNo);
System.out.println("姓名:”+s.name);
if(s instanceof Collegian){
System.out.println("专业”+(((Collegian)s).major);
错误转换——指向子类对象的父类变量给子类变量赋值
class convert4{
public static void main(String args[]){
Student s;
Collegian c;
s=new Collegian("23","张三”,"计算机”);
c=s;
showInfo(c);}
static void showInfo(Student s){
System.out.println("学号:”+s.studentNo);
System.out.println("姓名:”+s.name);
if(s instanceof Collegian){
System.out.println("专业”+(((Collegian)s).major);
正确转换——正确的强制类型转换为子类类型的变量给子类变量赋值
class convert5{
public static void main(String args[]){
Student s;
Collegian c;
s=new Student("32","asda","dsa");
c=(Collegian)s;
showInfo(c);
}
static void showInfo(Student s){
System.out.println("学号:”+s.studentNo);
System.out.println("姓名:”+s.name);
if(s instanceof Collegian){
System.out.println("专业”+(((Collegian)s).major);