class Person{

   String name;

   int age;

/*

以上两个为成员变量

*/

   Person(){

   System.out.println("Person的无参数构造函数");

   }

   Person(String name,int age){

   this.name = name;

   this.age= age;

   //System.out.println("my name is " + name + "  \n my age is " + age );

   }

   //以上两个Person为构造函数

   void eat(){

   System.out.println("吃饭");

   }

   //void为成员函数

}


----

/* extend只能继承成员变量和成员函数而不能继承Persong中的构造函数


在子类中必须调用父类中的构造函数,如果不调用则系统自行辅助调用

即直接加上一句话

super进行调用   ---super 如果调用不为空的构造函数则super()不执行

如果想调用父类中其他的任意函数,那么就在super()括号中写上需要调用的参数即可

*/

class Student extends Person{

   int grade;

   //在子类的构造函数中,必须 调用父类的构造函数  为什么????

   Student(){

   //super();

   System.out.println("Student的无参数构造函数");

   }

   Student(String name , int age , int grade){

   //this.name = name;

   //this.age = age;

   super(name,age);

   this.grade = grade;

   System.out.println("my name is " + name + "  \n my age is " + age  + "  my grade is "     + grade);

   }

}


--------

class Test{

   public static void main (String args []){

   Student student = new Student("张三",18,3);

   System.out.println(student.name);

   System.out.println(student.age);

   System.out.println(student.grade);

/*生成Student这个类的对象,

首先我们使用new这个关键字调用Student这个构造函数

当我们使用new这个关键字来调用student这个构造函数时候,

有一个东西会帮我们先调用Person这个函数的无参数构造函数

然后在执行Student student = new Student();

*/

   }

}

wKiom1MKv8ugea4_AAEUIic4jQc135.jpg