标签:
//不解释了直接上代码吧
//-------------------------------------------------------------------------------------
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("Person的有参数构造函数");
	  }
	
	  void eat(){	
		    System.out.println("吃饭");		
	  }
  void introduce(){
		    System.out.println("my name is " + name +",my age is " + age);
	  }
}
//----------------------------------------------------------------------------
class Student extends Person{
    //在子类的构造函数当中,必须调用父类的构造函数
	  int grade;
	  String address;
	
	  Student(){
		    super();//super一定要在第一行
		    System.out.println("student的无参数的构造函数");
	  }
	  Student (int grade){
		    this();
	  }
	
	  Student(String name,int age,int grade){
		    //this.name = name;
		    //this.age = age;
		    super(name,age);         //super和this一样,一定要在构造函数第一行
		    this.grade = grade;
	  }
	
	  void study(){
		    System.out.println("学习");
	  }
	  //复写(override)也被称为覆盖或者重写
	  //1.在具有父子关系的两个类中
	  //2.父类和子类各有一个函数,这两个函数的定义(返回值类型、函数名和参数列表)完全相同
	  void introduce(){
		
		    //System.out.println("我的姓名是" + name + "我的年龄是" + age);
		    super.introduce();//代替了上面的重复代码
		    System.out.println("我的家在" + address);
	  }
}
//----------------------------------------------------------------------------------------------------------
凡是见到new就在堆内存里生成一个对象
Student stu = new Student();
匿名对象就是个一次性的对象如 new Student().introduce(); 每次new的匿名对象是不同的,一次性的。
标签:
原文地址:http://www.cnblogs.com/codetochangetheworld/p/4181368.html