①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没有关系");
}
}
运行结果:
从运行结果观察,可以得出,凡是类似的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的一点点心得,欢迎大家的批评和改进建议===