类与类之间的继承

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代码的时候,要记住一个原则,就是相同的代码不要重复写,为了不重复写,可以采用继承的技术来解决这样问题,使得代码量减少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值