java之extends

①extends是什么意思?

②extends有什么用?

③extends能做什么?

首先回答第一个问题,extends根据百度翻译是延伸,延续等意思。eg: class Dady{},class Son extends Dady{},Son就是Dady的延续。

package com.testextends;

public class TestExtends {
    public static void main(String[] args) {
        Son son = new Son();
        son.show();
    }
}

class Dady {
    private static Long DadyMoney;

    static {
        DadyMoney = 1000L;
        System.out.println("初始化DadyMoney");
    }

    public void setDadyMoney(Long dadyMoney) {
        DadyMoney = dadyMoney;
    }

    public Long getDadyMoney() {

        return DadyMoney;
    }

    Dady() {
        System.out.println("我是Dady的无参构造函数");
    }

}

class Son extends Dady {
    private static Long SonMoney;

    static {
        SonMoney = 500L;
        System.out.println("初始化SonMoney");
    }

    public Long getSonMoney() {
        return SonMoney;
    }

    public void setSonMoney(Long sonMoney) {
        SonMoney = sonMoney;
    }

    Son() {
        System.out.println("我是Son的无参构造函数");
    }

    public void show() {

        System.out.println("Dady的钱就是Son的钱 " + getDadyMoney());
        System.out.println("Son的钱 " + getSonMoney() + " 只属于Son所有,和Dady没有关系");
    }

}

运行结果:

java之extends_第1张图片

从运行结果观察,可以得出,凡是类似的Son如果extends了Dady,那么Son就拥有了Dady的某些功能。为什么是某些功能呢?

比如,我们把setDadyMoney方法的修饰符改为private,那么Son就不能extends Dady的setDadyMoney的这个方法。

另外,我们修改main方法里的第3行为Dady,那么第4行的调用会成功嘛?

public class TestExtends {
    public static void main(String[] args) {
         Dady son = new Son();
         son.show();
    }
}

答案是,肯定不会成功,因为第3行的意思是把new Son()这个对象强制转换成了Dady,因为Dady并没有show这个方法,所以肯定会调用失败。

在实际开发中,可以使用extends提取公共内容作为父类,使得代码更加简洁明了。

===以上是个人使用extends的一点点心得,欢迎大家的批评和改进建议===

 

你可能感兴趣的:(java之extends)