类的继承

1.为什么需要使用继承?

1.提高代码的重用性;
2.提高程序的扩展性。

2.Java类继承类的语法格式

Java中继承类的关键字:extends
格式:
public class 类名(子类、派生类) extends 类名(父类、基类){

}
注意:Java类的继承是单继承(一个子类只能有一个父类).
现实生活中的什么关系需要使用继承来实现呢?
	包含关系:
		汽车包含轿车、卡车、...
		学生包含大学生、高中生、...

3.子类能继承到父类的那些内容?

Java中子类能继承到父类的所有属性和方法(但是不包括构造方法)。

子类是否可以定义父类中没有定义过的方法和属性?
可以的

4.方法重写

什么情况下要使用方法重写呢?
	子类和父类都有同一个方法,但是子类方法的具体实现和父类不同时,此时就需要方法重写。
方法重写的条件:
	1.要存在继承关系;
	2.方法重写时,子类方法的访问修饰符可以大于或者等于父类方法的访问修饰符;
	3.方法重写时,子类方法的返回值数据类型,方法名,参数都必须要和父类的完全一致;
	4.方法的具体实现要不同。
怎么调用重写后的方法(父类和子类都有同一个方法)呢?
	根据new关键字后的类名来决定,如果类名是子类的,则优先调用子类的方法,如果子类没有这个方法,则调用父类中的。
如果想要父类和子类的方法都执行,要如何处理呢?
	super关键字来调用父类的方法。
是不是所有的方法都能重写呢?
	1.构造方法不能重写
	2.final修饰的方法不能重写
	3.private修饰的方法不能重写,如果写了,叫做定义新方法。
	4.默认的修饰的方法在特定情况下也不能重写,如果写了,叫做定义新方法。

5.自动转型

要使用自动转型就必须存在继承关系。
自动转型的格式:
	父类名 对象名 = new 子类名();
	method(父类名  对象名){

	}
	父类名  对象名A  = new  子类名();
	子类名  对象名B  = new  子类名();

	method(对象名A);
	method(对象名B);
	
使用自动转型一定会存在无法调用子类特有的属性和方法。
为什么会存在呢?
	这是Java编译机制的问题,Java在编译的时候编译的是java文件,只会根据对象名的类型,进行属性和方法查找,如果存在则编译通过,如果不存在则编译报错。

	运行的时候优先调用new关键后类名中的方法,这是程序运行的时候已经到内存中了,对象名通过内存查找,首先找到的是子类的,所以调的是子类,如果子类没有,再去父类对象中查找、调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值