多态
public class Fu {
int a=1;
public void methed(){
System.out.println("这是父类");
}
}
public class Zi extends Fu{
int a=2;
public void methed(){
System.out.println("这是子类");
}
}
public interface JiDu {
public abstract void jidu();
}
public class Pig implements JiDu{
public void jidu(){
System.out.println("缉毒炜在缉毒");
}
}
public class Tset {
public static void main(String[] args) {
//普通类的多态:父类类型 变量名=new 子类类型();
//多态中的成员变量特点 编译运行看左边
//1.编译时期看父类是否有该成员变量,有编译成功,没有,编译失败
//2.运行时期的结果走父类成员变量的值
//多态中的成员方法特点 编译看左边 运行看右边
//1.编译时期看父类是否有该成员方法,有编译成功,没有,编译失败
//2.运行时期的结果是调用子类重写后的方法
Fu f=new Zi();
System.out.println(f.a);
f.methed();
JiDu j=new Pig();//向上转型 :父类类型 变量名=new 子类类型();
j.jidu();
System.out.println(j instanceof Pig);
//前提需要先有向上转 向下转型:子类类型 变量名=(子类类型) 父类引用变量; 可以调用自己独有的变量和方法
//Person p=(Person)a;
}
}
public abstract class Animal {
public abstract void eat();
}
public class Dog extends Animal{
public void eat() {
System.out.println("狗吃屎");
}
public void lookhome(){
System.out.println("看家");
}
}
public class Test {
public static void main(String[] args) {
Animal dog=new Dog();
dog.eat();
//调用自己独有的方法
method(dog);
}
public static void method (Animal an){
if(an instanceof Dog){
Dog d=(Dog)an;
d.lookhome();
}else if(an instanceof Cat){
Cat c=(Cat)an;
c.pu();
}
}
}