Java总结1
1、什么是多态性?什么是虚拟方法的调用?
对象的多态性,父类的引用指向子类的对象。
1 | |
调用方法时,编译时看左边,运行时看右边。
2、一个类只有一个直接父类,一个父类可以有多个父类。子类能直接获取父类的父类的结构,子类可以获取父类中private权限的属性。
3、方法的重写(override/overwrite)的具体规则有哪些?
Overload是重载的意思,表示在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参bai数类型不同即可。Override是覆盖的意思,也就是重写,它与返回值类型无关,只看参数列表。
两者不同主要体现在:
1,目的
overload用于增加程序的可读性(做法不同,但是做的同一事情)。 override用于提供其超级类已经提供的方法的特定实现。
2,范围
overload 在相同的类范围内内执行。 override发生在两类具有继承(继承)的关系。
3, 参数
overload参数必须不同。 override参数必须相同。
4,多态性
overload 静态多态,调用的函数在编译时被选中。 override 是运行时多态性的。
5,返回类型
overload中可以相同或不同。但你必须改变参数。 override必须是相同的或协变的。
具体规则
override(重写,覆盖) (1)方法名、参数、返回值相同。 (2)子类方法不能缩小父类方法的访问权限。 (3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 (4)存在于父类和子类之间。 (5)方法被定义为final不能被重写。 (6)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
overload(重载,过载) (1)参数类型、个数、顺序至少有一个不相同。 (2)不能重载只有返回值不同的方法名。 (3)针对于一个类而言。 (4)不能通过访问权限、返回类型、抛出的异常进行重载; (5)方法的异常类型和数目不会对重载造成影响;
override应用中,最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。 除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。
4、super调用构造器,有哪些具体的注意点?
this(形参列表):本类重载的其他构造器;
super(形参列表):调用父类中指定的构造器;
俩个都必须放在第一行,只能选择一个。如果不写,默认Super空参。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!