Fork me on GitHub

Java方法重写与super关键字

----------siwuxie095

   

   

   

   

   

方法的重写:

   

1)在继承中也存在着重写的概念,其实就是子类定义了和父类同名的方法

   

2)定义:方法名称相同,返回值类型相同,参数也相同

   

3)重写限制:被子类重写的方法不能拥有比父类更严格的访问权限

   

4)访问权限:private < default < public

   

private 只能在当前类中进行访问,default 可以在同一包下进行访问

(没有写 private public,即是 default),public 可以在整个工程下

都可以访问〕

   

   

代码:

   

package com.siwuxie095.extendsdemo;

   

class A{

public void tell() {

System.out.println("A---tell() 方法");

}

 

private void say(){}

 

//前面什么都没有写的即是 default

void print(){}

   

}

   

   

class B extends A{

public void tell(){

//调用父类的方法

super.tell();

System.out.println("B---重写 tell() 方法");

}

}

   

public class ExtendsDemo04 {

   

public static void main(String[] args) {

B b=new B();

b.tell();

}

   

}

   

   

运行一览:

   

   

   

   

   

   

super 关键字:

   

强行调用父类方法的执行

 

super 不一定在重写中使用,也可以表示方法是从父类继承而来的

   

   

如:

子类对象在实例化之前,先调用父类构造方法,后调用子类构造方法的原因:

   

虽然没有手动去调用父类的构造方法,其实是省略了 super();,在编译时系统

自动在子类的构造方法中加入 super();

   

   

代码:

   

package com.siwuxie095.extendsdemo;

   

   

class Father{

private String name;

private int age;

 

public Father() {

System.out.println("父类的构造方法");

}

 

}

   

class Son extends Father{

public Son() {

super();

System.out.println("子类的构造方法");

}

 

 

}

   

public class ExtendsDemo03 {

   

public static void main(String[] args) {

//实例化时,先执行父类的构造方法,再执行子类的构造方法

Son s=new Son();

}

   

}

   

   

运行一览:

   

   

   

   

   

【made by siwuxie095】

posted on 2017-03-17 21:04  siwuxie095  阅读(511)  评论(0编辑  收藏  举报

导航