多态 instanceof 类型转换
多态 instanceof 类型转换
package Java学习.chen.haha.ac.dome3;
public class person {
public Object eat;
public void run(){//写个方法
System.out.println("run");
}
}
package Java学习.chen.haha.ac.dome3;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class student extends person {
@Override
public void run() {
System.out.println("so");
}
public void eat(){
System.out.println("jump");
}
}
package Java学习.chen.haha.ac.dome3;
import com.sun.org.apache.xpath.internal.objects.XObject;
public class application {
public static void main(String[] args) {
//new student();
//一个对象的实际类型是确定的
//可以指向的引用类型就不确定了
//可以指向的引用类型就不确定了 父类的引用指向子类
//student能调用的方法都是自己的或者继承父类的
student s1 = new student();//子类引用
//person父类可以指向子类,但是不能调用子类独有的方法
person s2 = new student();//父类引用
Object s3 = new student();
//对象能执行那些方法 主要和左边有关 和右边关系不大
// s2.eat //因为父类person没有eat方法
s2.run();//运行时调用
}
}
多态的注意事项
多态是方法的多态不是属性的,属性没有多态
父类和子类有联系 类型转换异常 classCastExcepttion
存在条件;继承关系方法需要重写,父类引用指向子类对象!father s1 = new son();
1static 属于类他不属于实例
2final 常量不能被重写
3private方法 私有不能被重写
## instanceof
package Java学习.chen.haha.ac.dome3;
public class person {
}
package Java学习.chen.haha.ac.dome3;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class student {
}
package Java学习.chen.haha.ac.dome3;
import com.sun.org.apache.xpath.internal.objects.XObject;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class application {
public static void main(String[] args) {
//instanceof 判断有没有父子关系 object>person.student
//有继承关系才会转
Object object = new student();
System.out.println(object instanceof student);//TURE
System.out.println(object instanceof person);//FALSE
System.out.println(object instanceof Object);//TURE
}
}
类型转换
子类转向父类 向上转型直接转 丢失子类中原本可直接调用地特有方法
父类转子类 向下转型会丢失父类被子类所重写掉的方法
方便方法的调用 减少重复的代码
package Java学习.chen.haha.ac.dome3;
public class person {
public void go(){
System.out.println("go");
}
}
package Java学习.chen.haha.ac.dome3;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class student extends person {
public void po(){
System.out.println("po");
}
}
package Java学习.chen.haha.ac.dome3;
import com.sun.org.apache.xpath.internal.objects.XObject;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class application {
public static void main(String[] args) {
person jay = new student();
//类型之间的转换父与子 由高到低
student student = (student) jay;
student.go();
((student)jay).go();//编译看左运行看右 父转子
person person = student;//子转父
}
}

浙公网安备 33010602011771号