class Ja5{
int a,b;
void ap(){
System.out.println(1);
}
void ep(){
System.out.println('a');
System.out.println('b');
}
}
class Ja6 extends Ja5{
void ep(){
System.out.println("a+b");
}
}
class Ja7{
public static void main(String []args){
Ja5 jq=new Ja5();
Ja6 jp=new Ja6();
jp=jq;
}
}
这句jp=jq;报错,看视频是这样的求解。我看的1.4的我用的是1.6的1.6以后的这样写就不行了吗?
int a,b;
void ap(){
System.out.println(1);
}
void ep(){
System.out.println('a');
System.out.println('b');
}
}
class Ja6 extends Ja5{
void ep(){
System.out.println("a+b");
}
}
class Ja7{
public static void main(String []args){
Ja5 jq=new Ja5();
Ja6 jp=new Ja6();
jp=jq;
}
}
这句jp=jq;报错,看视频是这样的求解。我看的1.4的我用的是1.6的1.6以后的这样写就不行了吗?
能编译通过,但运行会出错。你像你爸爸,不会说你爸爸像你。子类有的方法,父类不一定会有,父类有的方法,子类就会有,所以你说能倒过来转吗
int a,b;
void ap(){
System.out.println(1);
}
void ep(){
System.out.println('a');
System.out.println('b');
}
}
class Ja6 extends Ja5{
void ep(){
System.out.println("a+b");
}
}
public class Ja7{
public static void main(String []args){
Ja5 jq=new Ja5();
Ja6 jp=new Ja6();
jp = (Ja6) jq; // 第一个方法
// jq=jp; 第二个方法
}
}
这是多态问题;父类的引用可以指向子类的引用,举个例子吧,你可是说苹果是水果,但是不能水果就是苹果;
jq=jp 可以直接把子类的对象赋给父类的对象,因为子类的范围比父类的小
jp = (Ja6)jq 把父类的引用直接给子类是不正确的,因为一个父类可以有许多子类,但是一个子类只能有一个父类,因此这儿要用强制类型转换,