基础语法
一些容易忽略的语法
来聊一聊我在java学习中发现的一些大家都没注意到的语法点,冷门但很有趣
1.标识符
定义:凡是自己可以起名字的地方都叫标识符。
涉及到的结构:
包名、类名、接口名、变量名、方法名、常量名
一般遵循以下规则
以下规范
见名知意
小知识
Unicode基本多语言级别的字符(除运算符,分隔符以及’©’‘®’#,±等等这样的特殊字符外的char字符)都可做标识符.
也就是说大部分语言的常用文字都可以用来命名,当然也包括汉字啦.
2.关于标识符重名
方法名重载(overload) 和重写(override)
这是我们都会着重学习,使用较多的两种情况
一个实例方法可以覆写(override)在其超类中可访问到的具有相同签名的所有实例方法[JLS8.4.8.1],从而使其能动态分派(dynamic dispatch;换句话说,VM 将基于实例的运行期类型来择要调用的覆写方法[JLS 15.12.4.4]。覆写是面向对象编程技术的基础,并且是唯一没被普遍劝阻的名字重用形式.
在某个类中的方法可以重载(overload)另一个方法,只要它们具相同的名字和不同的签名。由调用所指定的重载方法是在编译期定的[JLS 8.4.9, 15.12.2].
重写方法的规则:
对于: 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ //方法体}
-
约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法
- ① 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
- ② 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符(private<缺省<protected<public)
-
>特殊情况:子类不能重写父类中声明为private权限的方法,子类方法不受限制
- ③ 返回值类型:(返回值协变类型)
-
>父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void
-
>父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
-
>父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)
- ④ 子类重写的方法抛出的受查异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)
需要注意
子类和父类中的同签名方法要么