关于JAVA重载、重写(覆盖)、隐藏

    **关于知识点的整理其实早就在做,只是一种手写笔记并没有写成博客,这算是我的第一篇博客吧。哎嘿嘿😁。
    最近进行了JAVA末考,自己整理了一些关于重载,重写(覆盖),隐藏的知识,来此算是记录一下,具体内容如下:**

一. 重载

    方法名、返回值相同,但参数不同的多个同名函数。
    
    特点:
    (1)	返回值必须相同(系统认为形参一样的函数返回结果类型也应该一样)。
    (2)	参数不同:
    ①	形参个数不同
    ②	形参数据类型不同
    ③	形参排列顺序不同
      (满足以上三个其中一个或多个即可)
      
    (3)	main函数也可重载
    (4)	返回值、异常、访问修饰符不能作为重载条件(会出现歧义)。

二. 重写(覆盖)

    子类重写父类的方法(函数)。
    
    特点:
    (1)	必须是在继承中。
    (2)	两同两小一大:
    ①	方法名、参数类型完全一致(注意:参数不能是子类)。
    ②	返回值、异常应与父类相同或比父类小。
    ③	访问修饰符应与父类相同或是比父类大。
    
    注意:
    子类实例方法不能覆盖父类的静态方法。      
    子类的静态方法不能覆盖父类的实例方法(编译出错)
    即:方法不能交叉覆盖!!!

三. 隐藏

    父类和子类拥有相同名字的属性或方法时,父类的同名的属性或者方法形式上不见了,但实际还是存在的。
    
    特点:
    (1)	方法隐藏只有一种形式——父类和子类存在相同的静态方法。
    (2)	子类的实例、静态变量可以隐藏父类的实例、静态变量。   

四. 隐藏和覆盖的区别

    1.	被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性。
    2.	被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法。
    3.	覆盖的是动态绑定,是受RTTI(运行时类型检查)约束的。而隐藏不受RTTI约束。

五. 特殊情况

    1.	final修饰的属性可以被隐藏,但是不能被赋值,即不能用: 
    final a=0;
   	a = 3;  (X 不可这样!!)
   	【对于引用类型的变量用final修饰后,它只是不能被指向其他对象,但是可以改变它自身的值。(改变是指在刚开始定义的时候可以定义成不同的)】
   	
   	2.	final修饰的方法不能被重写,但可以被重载。
   	3.	final修饰的类不能被继承。
   	4.	private方法隐式地添加了final。

   某些地方有错误或是有其他重要的我没记录的知识点,欢迎大佬指正与补充!
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值