Java基础Day07-面向对象2(继承与多态)

继承

public class 子类  extends 父类{

}
把多个类共同的属性和行为定义在一个父类中 让这些类分别去继承该类 就可以共享父类中的属性和方法
子类可以访问父类中非私有的成员

继承的特点:

	1 java中只支持单继承 不支持多继承 但是可以多层继承
	2 java中任何一个类都间接或者直接的继承自Object类  Object类是所有类的根类

super

	super不是引用类型 不包含某个对象的内存地址 他只是子类用来访问父类数据的一种方式
	如何访问父类的方法?	super.方法名();
	如何访问父类的成员变量?	super.变量名;

在继承中 访问成员的特点?

	访问成员变量->this.变量名
	访问父类变量->super.变量名		同名的变量		从局部范围 -> 成员范围 -> 父类成员范围
	访问局部变量 ->直接使用变量名

	
	同名方法		从成员范围 -> 父类范围
	访问成员方法 -> 方法名()/this.方法名();
	访问父类方法 ->  super.方法名();
	
	this和super在构造方法中的用法
	在子类构造方法的第一行 默认都会有super() 作用是对父类中的数据进行初始化操作 但是并没有父类型对象产生
	另外 如果想通过子类的构造方法给父类中的属性赋值 super(参数1,参数2...)
	this()表示在当前的构造方法中调用本类的其他带参构造
	this()和super()不能同时出现在第一行 面试题可能出

方法的重写

	1:在具有继承关系的两个子父类之间
	2:父类中的方法无法满足子类的业务需求
	3:方法的声明必须和父类的方法声明保持一致
	4:只能修改方法体
	5:@Override 表名重写的是来自父类的方法

多态

	1:有继承关系
	2:存在方法的重写
	3:有 父类型引用 指向 子类型对象
	
	同一个对象 在不同时期表现出不同状态
	
	父类型引用指向子类型对象
	父类名 对象名 = new 子类名(); //向上转型 upcasting
	
	访问成员的特点:
		访问成员变量:编译看左 运行看左
		访问成员方法:编译看左 运行看右
		
	毛病:无法访问子类独有的方法
		
		向下转型 downcasting
		语法:目标类型 对象名 = (目标类型)要被强转的对象名;
		
		有可能会引发异常:ClassCastException 如何避免?
		在做强转之前 先做判断 两者之间是否存在继承关系
		a instanceof b
		
	多态的用法:
		最常用的场景是:定义方法时 方法的参数列表是 父类型 但是调用方法时接收的参数是 子类型的对象
		
		提高了程序的扩展性和可维护性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值