Java中的重写和重载

重载(overriding)

1.     Java中的重载就是在一个类中可以创建多个方法,他们具有相同的名字,但是有不同个数的参数或是不同类型的参数,在使用时候根据不同的参数类型和参数个数来确定使用哪一个函数,这就是多态性。

2.     重载的时候,方法名是一定要一样的,返回类型可以相同也可以不相同,但是参数个数或是参数类型一定是不同的。不能根据返回类型来判断是否是重载。

重写(overloading)

1.     父类和子类之间的多态性,对父类的函数进行重新的定义。如果在子类中定义某个方法个其父类有相同的名称和参数,可以说该方法被重载,java中子类可以继承父类中的方法,而不需要重新编写相同de方法,但有时候子类不想原封不动的继承父类的方法,二十做一些修改,这就是方法的重写,也可以称之为是方法的覆盖

2.     若子类中的方法与父类中某一个方法具有相同的方法名,返回类型和参数相同,则新的方法将覆盖原有的方法。如需父类中原有的方法,可以使用super关键字,该关键字引用了当前类的父类。

3.     子函数俄修饰符不能小与父类。

 

 

引申一下final修饰的类、方法、变量

1.     当final修饰一个变量的时候一般把它当作是常量,通常和static关键字配合使用。如果是一个基本类型的变量,则其值一旦初始化就不能更改,如果是应用类型则在其初始化之后便不能再让它转向另一个对象。

2.     当final修饰类中的方法时候,该方法在子类中是不能被重写(覆盖),类的private方法隐式的被指定为final方法。

3.     当final修饰一个类的时候,表明该类不能被继承。Final类中的成员变量可以根据需要设置为final,但是要注意final类中的所有方法都是隐式的设置为final类型。

 

面试时候:询问static方法和private能否被重写(覆盖)

如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。

 

访问权限为private的方法是不会被重写的,因为他的可见范围就是当前类,出了该类就无法调用了,更不要说重写了,由此可见:如果父类中的一个方法声明为private的,就算是子类中也定义了该方法且范围更大,但是只是子类中的两个不同的方法,而不是重写。

你可能感兴趣的:(Java)