Java-继承
来源:互联网 发布:linux文件目录介绍 编辑:程序博客网 时间:2024/06/05 12:40
继承
以下图为例
编写父类
/**
* 工程师类--父类
* @author Administrator
*/
public class Engineer {
//公有的属性和方法
//protected 子类可以继承
protected int id;
protected String name;
protected String enterTime;
public Engineer(int id, String name, String enterTime) {
super();
this.id = id;
this.name = name;
this.enterTime = enterTime;
}
public void showInfo(){
System.out.println("编号:"+id+"\n姓名:"+name+"\n入职时间:"+enterTime);
}
}
编写子类,继承父类--extends继承关键字,只能继承一个父类
子类访问父类成员>使用super关键字
访问父类属性>super . name; (super代表父类对象)
访问父类方法>super . print();
/**
* 软件工程师继承工程师类
* @author Administrator
*
*/
public class SoftEngineer extends Engineer{
//独有的属性和方法
private String type;//语言类型
public SoftEngineer(int id, String name, String enterTime,String type) {
super(id, name, enterTime);
this.type=type;
// TODO Auto-generated constructor stub
}
public void coding(){
System.out.println("正在编程");
}
@Override
public void showInfo() {
// TODO Auto-generated method stub
super.showInfo();
System.out.println("\n语言类型:"+type);
}
}
* 测试工程师继承工程师类
public class TestEngineer extends Engineer {
private String level;//语言类型
public TestEngineer(int id, String name, String enterTime,String level) {
super(id, name, enterTime);
this.level=level;
// TODO Auto-generated constructor stub
}
public void test(){
System.out.println("开始测试");
}
/**
* 方法重写的默认行为是调用父类方法内容
* 作用:可以在子类中修改父类的方法内容
*/
@Override//重写 以@开头的标识符叫注解
public void showInfo() {
// TODO Auto-generated method stub
super.showInfo();
System.out.println(",等级"+level);
}
}
测试类
public class Test {
public static void main(String[] args) {
//调用父类中定义的方法结果:
//1.如果子类中没有重写父类的方法,调用的就是父类的实现
//2.如果子类中重写了父类的方法,调用的就是子类中的实现
SoftEngineer soft=new SoftEngineer(1, "zqq", "2017-08-09", "java");
soft.showInfo();
soft.coding();
TestEngineer test=new TestEngineer(2, "zzz", "2015-05-02", "初级测试工程师");
test.showInfo();
test.test();
}
}
继承后的初始化顺序
- 父类属性
- 父类代码块
- 父类构造方法
- 子类属性
- 子类代码块
- 子类构造方法
一个类创建对象时 的初始化顺序:属性、代码块(初始化)、构造
有继承关系,先有父类,再有子类
父类的构造,子类一定要调用
例如:
1. protected int a=10;//先创建属性
public A() {
System.out.println("先初始化了a属性:a="+a);//才调用的构造函数
System.out.println("再调用了a的构造");
}
2. //初始化
{
b=30;
a=10;
System.out.println("b初始化");
}
//构造函数
public B() {
System.out.println("先初始化了b属性:b="+b);//才调用的构造函数
System.out.println("再调用了b的构造");
}
有些父类成员不能继承
- 子类不能访问父类private成员
- 子类与父类不在同包,使用默认访问权限的成员
- 构造方法
何时使用继承
- 继承与真实世界类似 符合is-a关系的设计使用继承
- 继承是代码重用的一种方式 将子类都有的属性和行为放到父类中
阅读全文
0 0
- Java继承
- JAVA-继承
- java 继承
- Java继承
- Java 继承
- JAVA继承
- java继承
- java/继承
- java 继承
- java继承
- java继承
- JAVA-继承
- Java继承
- java 继承
- JAVA 继承
- 【继承】 JAVA
- Java继承
- Java继承
- sql命令中关于对建好表的操作
- Spring AOP之ProxyFactoryBean与BeanNameAutoProxyCreator
- Lintcode经典二分查找问题
- Java中this和super的用法总结
- BZOJ2178: 圆的面积并(Simpson积分)
- Java-继承
- 框架
- sql中的函数总结
- 对城市名搜索(汉字、拼音)功能的改进 / 小程序城市区县定位模块改进
- 查看文件md5码
- GCD
- HDU
- springboot学习笔记一
- LINUX Shell 下求两个文件交集和差集的办法