package day11;
/**
* java 基础 面向对象之继承、抽象类和借口
*
* 1、继承
* 面向对象的三大特征:封装、继承、多态
* 主要用在 游戏开发:
* 所有的人物角色都属于一个类,这个类当中包含了所有的共同的属性,
* 但每一个门派之间,技能不同,也就是在人物的基础上加上了技能的特性
* 要求门派离得人物必须有角色这个类里面的所有属性
*
* 继承;
* 就是在代码中一个类继承了另一个类的所有的可以被继承的属性
*
*【发现】
*1、再调用子类的构造函数的时候,也会来调用父类的构造函数,一个子类的创建必须现有
*父类的对象空间,才可以
*2、如果父类的中的成员变量用private修饰,这个成员变量子类无法使用,也可以说子类不能
*继承父类的私有化属性
*3、如果父类中成员方法用private修饰,这个成员方法子类也无法使用,子类不能
*继承父类的成员方法。
*【注意事项】
*继承的确能帮我们节省代码空间,但是不能是为了代码而去继承,一定是存在了
*继承关系类才能用继承来完成。
* @author Administrator
*
*/
class Person {
int age;
String name;
public Person() {
System.out.println("Person类的无参构造函数");
}
public Person(int age, String name) {
this.age = age;
this.name = name;
System.out.println("Person类的有参构造函数");
}
public void coding() {
System.out.println("愉快的写代码~~~");
}
}
class Worker extends Person{
int id;
public Worker() {
System.out.println("worker的无参构造函数");
}
public Worker(int id, int age , String name) {
super(age,name);
this.id = id;
System.out.println("有参的构造函数");
}
public void workering() {
System.out.println("一群码字猴在努力的码代码");
}
}
public class Test01 {
public static void main(String[] args) {
//这下面两行注释掉之后,person的无参构造函数还是会被调用,为什么?
/*
Person p = new Person();
p.coding();
*/
Worker w = new Worker();
//【在这里多了一个Person类的构造函数,哪里来的】
/**
* 上面的person无参构造方法被注释掉之后还是会被调用,就是
* 子类调用构造方法默认的调用父类的同一类型构造函数
*/
//以下是worker自己的成员变量及成员方法
w.workering();
w.id = 9527;
//这里是继承了的成员变量与方法
w.name = "连狼";
w.age = 17;
w.coding();
System.out.println("");
}
}