疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java继承 构造器 重载,重写


 

       继承的重写 (Override)

  class Base

  {

  ​public void function1() ​//无参数的方法

  ​{

  ​ ​功能1;

  ​}

  ​public void function1(Datatype var1) ​//带一个参数的方法

  ​{

  ​ ​功能2;

  ​}

  }

  class Sub extends Base

  {

  ​public void function1()

  ​[

  ​ ​//如果需要和父类的function1功能完全一样,直接调用父类的function1()

  ​ ​super.function1();

  ​ ​//如果希望子类的function1()功能和父类的不一样,那么就需要重新写子类的function1()

  ​ ​//各种自定义的..功能

  ​} ​

  }

  =================================================================================

  继承的重载 (Overload)

  默认下子类继承了父类所有的public公有的方法,private的不能获得

  方法的重载是相同的函数名,但是方法里面的参数列表不同,和一般方法重载一样

  所以当父类的function是private修饰时,子类的function是新建的和父类没关系

  class Base

  {

  ​public void function1() ​//无参数的方法

  ​{

  ​ ​功能1;

  ​}

  ​public void function1(Datatype var1) ​//带一个参数的方法

  ​{

  ​ ​功能2;

  ​}

  }

  class Sub extends Base

  {

  ​public void function1(和父类参数列表不同的参数)

  ​{

  ​ ​功能;

  ​}

  }

  =================================================================================

  =================================================================================

  对父类构造器的调用

  子类不能获得父类的构造器

  子类不能直接使用父类的构造器,但是可以在子类的构造器中使用super(value)来调用父类的构造器

  class Base

  {

  ​Base(){} ​//不带参数的构造器

  ​Base(Datatype var)

  ​{

  ​ ​功能1;

  ​}

  ​Base(Datatype var1,Datatype var2)

  ​{

  ​ ​功能1;

  ​ ​功能2;

  ​}

  }

  class Sub extends Base

  {

  ​Sub(){} ​//不带参数的子类

  ​Sub (Datatype var1) ​ ​//带一个参数的子类构造器

  ​{

  ​ ​super(var1);

  ​ ​其他功能;

  ​}

  ​

  ​Sub(Datatype var1,Datatype var2) ​//带两个参数的子类构造器

  ​{

  ​super(var1,var2);

  ​ ​其他功能;

  ​}

  ​public static void (String[] arg)

  ​{

  ​ ​//这样使用子类的构造器,简介使用了父类的构造器,对这些初始化

  ​ ​//错误的使用

  ​ ​//new super(var1,var2); 不能直接调用父类的构造器

  ​}

  }

  1 class FatherA

  2 {

  3 String name;

  4 FatherA()

  5 {

  6 System.out.println("FatherA不带参数的构造器");

  7 }

  8 FatherA(String name)

  9 {

  10 this.name = name;

  11 System.out.println("FatherA带一个参数的构造器 : " + name);

  12 }

  13 }

  14

  15 class FatherB extends FatherA

  16 {

  17 String name;

  18 int age;

  19 String sex;

  20 FatherB()

  21 {

  22 System.out.println("FatherB不带参数的构造器");

  23 }

  24

  25 FatherB(String name)

  26 {

  27 super(name);

  28 System.out.println("FatherB带一个参数的构造器 : " + name);

  29

  30 }

  31

  32 FatherB(String name , int age)

  33 {

  34 super(name);

  35 this.age = age;

  36 System.out.println("FatherB带两个参数的构造器 : " + name + " : " + age);

  37 }

  38

  39 FatherB(String name ,int age ,String sex)

  40 {

  41 //super(name,age);其父类没有该构造器,故不能使用啦

  42 this(name,age); //调用本类的构造器

  43 this.sex = sex;

  44 System.out.println("FatherB带三个参数的构造器 : " + name + " : " + age + " : " + sex);

  45 }

  46

  47 public void myFunction()

  48 {

  49 System.out.println("hello world");

  50 }

  51 public void myFunction1()

  52 {

  53 System.out.println("base class function");

  54 }

  55 }

  56

  57 public class SonClass extends FatherB

  58 {

  59 public SonClass() //无参数构造器

  60 {

  61 //super("admin",20);

  62 //System.out.println("显式调用了其父类的带两个参数的");

  63

  64 super();

  65 System.out.println("调用其父类不带参数的构造器");

  66 }

  67

  68 public SonClass(String name)

  69 {

  70 super(name);//调用其父类带一个参数的构造器

  71 System.out.println("显式调用一个参数的..");

  72 }

  73

  74 public SonClass(String name ,int age)

  75 {

  76 super(name,age);

  77 System.out.println("调用两个参数的...");

  78 }

  79

  80 public SonClass(String name , int age ,String sex)

  81 {

  82 super(name,age,sex);

  83 System.out.println("调用三个参数的...");

  84 }

  85

  86 public void myFunction(String name) //重载啦

  87 {

  88 System.out.println(name + " hello world");

  89 }

  90

  91 public void myFunction() //重写了父类的function()

  92 {

  93 System.out.println("china hello world");

  94 }

  95 public static void main(String[] arg)

  96 {

  97 new SonClass(); //new一个无参数的对象

  98 System.out.println("============================");

  99 new SonClass("hello"); //new一个带参数的对象

  100

  101 System.out.println("============================");

  102 new SonClass("china",20);

  103

  104 System.out.println("============================");

  105 new SonClass("japan",20,"man");

  106

  107 System.out.println("============================");

  108 (new SonClass()).myFunction();

  109

  110 System.out.println("============================");

  111 (new SonClass()).myFunction("admin");

  112 }

  113 }