建大功于天下者,必先修于闺门之内:Java继承与多态

类之间的关系:

依赖:如果在一个类A的方法中操作另外一个类B的对象,那么类A依赖于类B

聚合:如类A包含类B

继承:继承是已有类创建新类,在已有类基础上扩展功能。

继承:

被继承的类叫父类(parent class)或超类(super class),继承父类的类叫子类(subclass)或派生类(derived class)

将共同特征抽出来放到一个共同的父类,子类通过继承父类来继承属性和方法,不需在自己的类体中再重复,也可以增加自己独有的属性和方法。

在Java中,关键字“extends”表示继承。格式:

<access> <modifiers> class SubClass extends SuperClass{
//......
}

(其实就有点像提取公因式,父类就是可以被提取出来的那个公因式)

示例:

public class Person {
	private String name;// 姓名
	private int age;// 年龄
	private String gender;// 性别
	……//省略get和set方法
}
class Teacher extends Person {
	private float salary;// 薪酬
	private String department;// 部门
	……//省略get和set方法
}
class Student extends Person {
	private int[] score;// 成绩
	private String grade;// 年级
	……//省略get和set方法
}

1.在Java中只支持单一继承,即一个类只能继承一个父类,而不能继承多个类

2.如果定义一个没有指明父类的类,默认自动继承类java.lang.Object

3.继承中,子类拥有父类的所有属性和方法,但父类可通过封装保留自己的隐藏数据,并通过暴露设计提供子类可访问的属性和方法。

多态:

重写: 当一个子类继承了一个父类时,可以在子类中直接使用父类的属性和方法。如果父类的方法无法满足子类的需求,则可以在子类中对父类的方法进行改造,也称作重写(override)。

重写的原则:

重写的方法的签名必须要和被重写的方法的签名完全匹配;

重写的方法的返回值必须和被重写的方法的返回一致或者是其子类;

重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

子类重写父类方法的过程中,可访问性只能一样或变的更公开。

可覆盖父类的方法,也可以重写父类的属性。

代码示例:

public class Base {
	public void print() { //protected
		System.out.println("In Base ");
	}
	public static void main(String[] args) {
		Son obj = new Son();
		obj.print();
		
	}
}
class Son extends Base {	
	// 覆盖父类的print()方法
	public void print() {  //重写时访问权限变化
		System.out.println("In Son ");
	}
}

子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。例如,父类中的方法是public权限,子类的方法就不能是private权限

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值