class Person
{
private String name;
private String location;
Person(String name)
{
this.name = name;
this.location = "beijing";
}
Person(String name,String location)
{
this.name = name;
this.location = location;
}
String info()
{
return "name:"+name+",location:"+location;
}
}
class Student extends Person
{
private String school;
Student(String name,String school)
{
this(name,"shanghai",school);
}
Student(String name,String location,String school)
{
super(name,location);
this.school = school;
}
public String info()
{
//String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school;//error
/*
TestExtends.java:34: 错误: name可以在Person中访问private
String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school
;
^
TestExtends.java:34: 错误: 找不到符号
String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school
;
^
符号: 方法 location()
2 个错误
*/
String msg = super.info()+",school="+this.school;
return msg;
}
}
class Teacher extends Person
{
private String rank;//职称
Teacher(String name,String rank)
{
this(name,"beijing",rank);
}
Teacher(String name,String location,String rank)
{
super(name,location);
this.rank = rank;
}
/*String info()
{
return super.info()+",rank="+this.rank;
}*/
/*
TestExtends.java:63: 错误: Teacher中的info()无法覆盖Person中的info()
String info()
^
正在尝试分配更低的访问权限; 以前为public
1 个错误
*/
String info()
{
return super.info()+",rank="+this.rank;
}
}
public class TestExtends
{
public static void main(String[] args)
{
Person p1 = new Person("Prince");
System.out.println(p1.info());
Person p2 = new Person("kangkang","taiwan");
System.out.println(p2.info());
Student s1 = new Student("mingming","heshida");
System.out.println(s1.info());
Student s2 = new Student("yuming","shangdong","wanfang");
System.out.println(s2.info());
Teacher t1 = new Teacher("wang","jiangshi");
System.out.println(t1.info());
Teacher t2 = new Teacher("li","nanyang","jiaoshou");
System.out.println(t2.info());
}
}
/*
总结:
1.this可以用在构造方法中,调用另一种构造方法
2.画出该程序的内存分析图
涉及到的内存:
stack segment
heap segment
data segment
3.方法重写时,子类的方法的权限不能比父类小
4.Student(String name,String school)
{
this(name,"shanghai",school);
}
怎么理解?
不是子类的构造方法的第一句默认为为super();吗?
5.dos下清屏:cls
6.java中的父类:Object类
它所在的包:java.lang
7.官方网站下载软件,及文档
8.构造方法:constructor
9.class Person{}
等价于class Person extends Object{}
*/
{
private String name;
private String location;
Person(String name)
{
this.name = name;
this.location = "beijing";
}
Person(String name,String location)
{
this.name = name;
this.location = location;
}
String info()
{
return "name:"+name+",location:"+location;
}
}
class Student extends Person
{
private String school;
Student(String name,String school)
{
this(name,"shanghai",school);
}
Student(String name,String location,String school)
{
super(name,location);
this.school = school;
}
public String info()
{
//String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school;//error
/*
TestExtends.java:34: 错误: name可以在Person中访问private
String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school
;
^
TestExtends.java:34: 错误: 找不到符号
String msg = "name:"+super.name+",location:"+super.location()+",school="+this.school
;
^
符号: 方法 location()
2 个错误
*/
String msg = super.info()+",school="+this.school;
return msg;
}
}
class Teacher extends Person
{
private String rank;//职称
Teacher(String name,String rank)
{
this(name,"beijing",rank);
}
Teacher(String name,String location,String rank)
{
super(name,location);
this.rank = rank;
}
/*String info()
{
return super.info()+",rank="+this.rank;
}*/
/*
TestExtends.java:63: 错误: Teacher中的info()无法覆盖Person中的info()
String info()
^
正在尝试分配更低的访问权限; 以前为public
1 个错误
*/
String info()
{
return super.info()+",rank="+this.rank;
}
}
public class TestExtends
{
public static void main(String[] args)
{
Person p1 = new Person("Prince");
System.out.println(p1.info());
Person p2 = new Person("kangkang","taiwan");
System.out.println(p2.info());
Student s1 = new Student("mingming","heshida");
System.out.println(s1.info());
Student s2 = new Student("yuming","shangdong","wanfang");
System.out.println(s2.info());
Teacher t1 = new Teacher("wang","jiangshi");
System.out.println(t1.info());
Teacher t2 = new Teacher("li","nanyang","jiaoshou");
System.out.println(t2.info());
}
}
/*
总结:
1.this可以用在构造方法中,调用另一种构造方法
2.画出该程序的内存分析图
涉及到的内存:
stack segment
heap segment
data segment
3.方法重写时,子类的方法的权限不能比父类小
4.Student(String name,String school)
{
this(name,"shanghai",school);
}
怎么理解?
不是子类的构造方法的第一句默认为为super();吗?
5.dos下清屏:cls
6.java中的父类:Object类
它所在的包:java.lang
7.官方网站下载软件,及文档
8.构造方法:constructor
9.class Person{}
等价于class Person extends Object{}
*/