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();
*/
}
}