java.lang.object是所以类的父类。父类与子类满足“子类is a 父类”,就满足继承关系。
所有的属性都可以继承,非私有的方法可以继承,构造和私有的方法无法继承。父类与父类之间是有关系的,子类不能给继承父类的构造。在构造对象的时候,我们会依次调用父类的构造,直达子类自身为止。在默认情况下,子类直接调用父类的无参数的构造,但是可以使用关键字super来指定子类调用父类的某一构造。super必须只能出现在子类构造当中的第一行。
public class Employee extends Person{
private int sal;
private String work;
public Employee(){}
public Employee(int sal, String work){
setSal(sal);
setWork(work);
}
public void setSal(int sal){
this.sal = sal;
}
public int getSal(){
return sal;
}
public void setWork(String work){
this.work = work;
}
public String getWork(){
return work;
}
}
public class Person {
private int age;
private String name;
private String sex;
public Person(){
System.out.println("Person");
}
public Person(String name,int age,String sex){
System.out.println("Person2");
setAge(age);
setName(name);
setSex(sex);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setSex(String sex){
this.sex = sex;
}
public String getSex(){
return sex;
}
}
public class Student extends Person{
private String id;
private String indata;
public Student(){}
public Student(String id, String indata){
setId(id);
setData(indata);
}
public void setId(String id){
this.id = id;
}
public String getId(String id){
return id;
}
public void setData(String indata){
this.indata = indata;
}
public String getData(String indata){
return indata;
}
}
public class Teacher extends Person{
private int sal;
public Teacher(){
System.out.println("Teacher");
}
public Teacher(String name, int age,String sex){
super(name,age,sex);
System.out.println("Teacher2");
}
public void setSal(int sal){
this.sal = sal;
}
public int getSal(){
return sal;
}
}
public class Main {
public static void main(String[] args){
Teacher t = new Teacher(); //构造不能继承 Teacher 与Person的构造有什么关系呢?
Teacher t1 = new Teacher("li",25,"男;了, ");
System.out.println(t.hashCode());
t.setName("zhang"); //从Person继承而来的
System.out.println(t.getName());//证明属性,方法可以继承,构造不能继承
}
}
这就是采用的封装和继承两个技术的代码。我们在写javaZ代码的时候,要记住一个原则,就是相同的代码不要重复写,为了不重复写,可以采用继承的技术来解决这样问题,使得代码量减少。