类的重载

在同一个类中,允许同时存在多个同名方法,只要这些方法的参数个数或类型不同即可。

// 向上转型:将子类对象看做是父类对象
class A{
    public static void draw(A a){  //A的静态方法
        System.out.println("调用该方法,draw一个A类的图像");
    }
}
public  class Parallelogram extends A{
    public static void main(String[] args) {
        Parallelogram b = new Parallelogram();
        draw(b);  //调用父类A的方法,draw一个A的子类的图像
    }
}
// 向上转型
class A{
    public static void draw(A a){  //A的静态方法
        System.out.println("调用该方法,draw一个A类的图像");
    }
}
public  class Parallelogram extends A{
    public static void main(String[] args) {
        A a = new Parallelogram();             //将子类对象看作是父类对象进行创建
//        Parallelogram c =  a;                 //不能父类的对象直接被赋值给子类  会报错
        Parallelogram c = (Parallelogram) a;  // 将父类对象通过显示类型转换为子类后,可被赋值给子类的对象
        draw(c);
    }
}
public class Test {
    public static void main(String[] args) {
        A a1 = new A1();
        a1.Eat("a1","ffa1");
        A1 aa1 = (A1)a1;
        aa1.Eat("aa1","ffaa1");

    }
}

class A{
    public  void Eat (String nm,String ffa){
        System.out.println(nm+":方法为"+ffa);
    }
}

class A1 extends A{
}

        /*
        a1:方法为ffa1
        aa1:方法为ffaa1
*/

instanceof关键字

判断父类对象是否为子类的实例,或者某个类是否实现了某个接口。

public class Test {
    public static void main(String[] args) {
        A a1 = new A1();
        a1.Eat("a1","ffa1");
        if (a1 instanceof A1) {
            System.out.println("a1是A1的实例");
            A1 aa1 = (A1)a1;
            aa1.Eat("aa1","ffaa1");
        }else{
            System.out.println("a1不是A1的实例");
        }


    }
}

class A{
    public  void Eat (String nm,String ffa){
        System.out.println(nm+":方法为"+ffa);
    }
}

class A1 extends A{
}

        /*
        a1:方法为ffa1
        a1是A1的实例
        aa1:方法为ffaa1
*/
 
posted on 2022-07-15 14:55  jxba  阅读(27)  评论(0编辑  收藏  举报