继承、super、final、覆写

关于继承,java中仅支持单继承,可以是多重继承;

				 即为一个类仅能有一个父类;

什么是继承?

	继承可以提升代码的复用性(目的),父类的功能,子类可以直接使用;
																					  使子类的功能更加强大;
	java中用extends关键字表示继承;
	语法:public class 类名 extends 父类名{类体}

注意:
私有化属性,不能被继承;
一个类如果没有显示继承另外一个类的话,该类默认继承Object;
java.lang.Object是java中的祖类;
意味着Object中的属性是所有类都有的;

super:保持了父类型的特征;

			作用:子类访问父类的属性

super用法:

		1.用于成员方法/构造方法中区分子类和父类同名的成员属性;		
		2.用于子类构造方法中,调用父类构造方法;(必须出现在有效代码第一行)

语法:super(参数);

注意:
①如果子类构造方法中,既没有this()也没有super();
那么会有一个默认的super();去调用父类的无参构造;
②this与super都必须出现在构造方法的第一行,那么就意味着两者不能同时出现;
③this与super都不能在静态方法中使用;

总结:
类名用于区分同名的静态变量和局部变量;
this用于区分同名的成员变量和局部变量;
super用于区分子类和父类同名的变量和方法;
super:子类构造方法使用super();去调用父类的构造方法;
如果构造方法中,第一行没有显示this()和super(),默认是super()调用父类的无参构造;
1.创建对象;
2.初始化父类属性;

this()和super()为什么必须出现在构造方法中有效代码的第一行?

	 super():用来调用父类的构造方法,初始化父类属性,并创建对象;
	 最终一定会溯源调用到祖类Object,通过Object创建对象;
	 既然创建对象,就必须在构造方法第一行。因为构造方法有初始化成员属性的功能;
	 成员属性想要初始化,必须要有存储它的空间,而这个空间就在对象中;
	 所以要保证先有对象,再有数据初始化,所以super()必须在第一行;
	
	 this():重载调用当前类的其他构造方法;
				保证先有对象;

构造方法私有化后,不能被继承
虽然子类构造方法中,会有默认的super()去调用父类的无参构造;
但是由于私有化,没有访问权限

实例语句块

可以等同看作成员方法,肯定需要使用对象;
但是没有名字,所以不能手动调用,仅能自动调用;
何时调用,创建完对象,就立刻执行;
故实例语句块是在创建对象之后执行的,且在构造方法执行之前;

覆写:又称重写、覆盖

解决子类继承父类后,某些属性需要不同于父类的问题;
①子类拥有自身特有的属性
②可以覆写父类的成员方法(覆写特指成员方法)

什么情况下需要进行覆写?
如果父类的方法已经无法满足子类的需求的时候,需要将父类中的方法进行覆写;
覆写的条件有哪些?
1.必须是有继承关系的体系中;
2.方法名,返回值类型,参数列表必须都相同;
3.不能逼原方法有更宽泛的异常(异常更加具体化);
4.不能比原方法有更低的访问权限(层级越低访问权限越高);
5.覆写特指对父类成员方法的覆写
继承最基本的作用:代码重用;
继承最重要的功能:方法可以覆写、多态;
覆写的目的?
1.满足当前需求,对方法体修改;
2.错误越来越少,越来越具体到某个点上,不能有更宽泛的异常;
3.使用范围越来越广,层级越来越多,不能有更低的访问权限(父类访问权限比子类访问权限低);
4.功能越来越强大;

final:一个修饰符,表示最后的,最终的,不可更改的;

注意:①修饰的类不能被继承;
②修饰的变量,相当于常量,不能被二次赋值(在整个程序生命周期中);
没有默认值,常量一般是public static final 修饰的
③修饰的成员方法不能被覆写;

深入final:

				final 修饰的变量,内存空间中的值不可更改;
				如果修饰的是引用类型变量,地址不能更改,
				但是与堆内存的内存空间无关(数据可以更改);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值