看了那么多自己总结一下。。。。。
/**
*@author:yelang
*@date:2007-10-5
*/
class person{
String name="yelang";
int age=20;
public person(){
name="zhangsan";
age=21;
}
public person(String name,int age){
this.name=name;
this.age=age;
}
public void write(){
System.out.println("name="+name+"\tage="+age);
}
}
class student extends person{
String name="dragon";
//此处又一次定义name,则它的值不再是父类中的yelang,而是dragon
//age值还是从父类中共享仍为20
public student(){
}
public student(int age){
//此此处系统自动调用父类的默认构造函数,使得父类中的name变成zhangsan,age变为21,
//然后再往下执行,但子类中的name为dragon,age还是从父类中共享为21
this.age=age;
}
public student(String name,int age){
//此此处系统自动调用父类的默认构造函数,使得父类中的name变成zhangsan,age变为21,
//然后再往下执行,但子类中的name为dragon,age还是从父类中共享为21
this.name=name;
this.age=age;
}
//public void write(){
// System.out.println(">>>>>>>>>>>>>>");
//}
//以上为方法覆盖,取消上面方法的注释,对比输出的不同结果
public void writeS(){
System.out.println("name="+name+"\tage="+age);
}
}
public class test{
public static void main(String args[]){
person p1=new person("lisi",22);
p1.write();
student p2=new student(23);
p2.write();
//当子类中没有重定义write()方法时,他调用父类中的write()方法,同时方法使用的是父类中的
//变量
p2.writeS();
student p3=new student("wangwu",24);
p3.write();
//同上一个注释
p3.writeS();
}
}
输出结果:
name=lisi age=22
name=zhangsan age=23
name=dragon age=23
name=zhangsan age=24
name=wangwu age=24
/**
*@author:yelang
*@date:2007-10-5
*/
class person{
String name="yelang";
int age=20;
public person(){
name="zhangsan";
age=21;
}
public person(String name,int age){
this.name=name;
this.age=age;
}
public void write(){
System.out.println("name="+name+"\tage="+age);
}
}
class student extends person{
String name="dragon";
//此处又一次定义name,则它的值不再是父类中的yelang,而是dragon
//age值还是从父类中共享仍为20
public student(){
}
public student(int age){
//此此处系统自动调用父类的默认构造函数,使得父类中的name变成zhangsan,age变为21,
//然后再往下执行,但子类中的name为dragon,age还是从父类中共享为21
this.age=age;
}
public student(String name,int age){
//此此处系统自动调用父类的默认构造函数,使得父类中的name变成zhangsan,age变为21,
//然后再往下执行,但子类中的name为dragon,age还是从父类中共享为21
this.name=name;
this.age=age;
}
//public void write(){
// System.out.println(">>>>>>>>>>>>>>");
//}
//以上为方法覆盖,取消上面方法的注释,对比输出的不同结果
public void writeS(){
System.out.println("name="+name+"\tage="+age);
}
}
public class test{
public static void main(String args[]){
person p1=new person("lisi",22);
p1.write();
student p2=new student(23);
p2.write();
//当子类中没有重定义write()方法时,他调用父类中的write()方法,同时方法使用的是父类中的
//变量
p2.writeS();
student p3=new student("wangwu",24);
p3.write();
//同上一个注释
p3.writeS();
}
}
输出结果:
name=lisi age=22
name=zhangsan age=23
name=dragon age=23
name=zhangsan age=24
name=wangwu age=24