java多态的一些练习

父类
package com.example.demo.demo;

public class Father {
    Father(){
        System.out.println("父类无参构造方法");
    }

    Father(String str){
        System.out.println("父类有参构造方法");
    }

    int age = 1;
    static String name = "father";


    public int getAge(){
        System.out.println("father-getAge");
        return age;
    }

    public static String getName(){
        System.out.println("father-getName");
        return name;
    }
}
子类
package com.example.demo.demo;

public class Son extends Father {
    Son(){
    	// 调用父类的有参构造方法
        super("str");
        System.out.println("子类无参构造方法");
    }

    int age = 2;
    static String name = "son";

    @Override
    public int getAge(){
        System.out.println("son-getAge");
        return age;
    }

    // 静态方法不可以重写
    public static String getName(){
        System.out.println("son-getName");
        return name+"son";
    }
}
测试方法
class Test {

    @Test
    void test() {
        // 父类引用指向子类变量,向上转型
        Father father = new Son();
        Son son = new Son();

        // 子类引用指向父类变量,向下转型,会报错
        // Son son1 = new Father();

        // 安全的进行转化
        /*Father father1 = new Son();
        if(father1 instanceof Son){
            Son son1 = (Son)father1;
            System.out.println("son1.getAge() = " + son1.getAge());
        }*/

        // 成员变量和静态方法:编辑看左边,执行看左边
        System.out.println("静态成员变量");
        System.out.println("father.name = " + father.name);
        System.out.println("son.name = " + son.name);
        System.out.println("非静态成员变量");
        System.out.println("father.age = " + father.age);
        System.out.println("son.age = " + son.age);
        System.out.println("静态方法");
        System.out.println("father.getName() = " + father.getName());
        System.out.println("son.getName() = " + son.getName());

        // 非静态方法:编译看左边,执行看右边
        System.out.println("非静态方法");
        System.out.println("father.getAge() = " + father.getAge());
        System.out.println("son.getAge() = " + son.getAge());
    }
}
执行结果
父类有参构造方法
子类无参构造方法
父类有参构造方法
子类无参构造方法
静态成员变量
father.name = father
son.name = son
非静态成员变量
father.age = 1
son.age = 2
静态方法
father-getName
father.getName() = father
son-getName
son.getName() = sonson
非静态方法
son-getAge
father.getAge() = 2
son-getAge
son.getAge() = 2

Process finished with exit code 0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值