62,610
社区成员
发帖
与我相关
我的任务
分享
//父类
TPerson = class
strict private
FName: string;
public
constructor Create(AName: string);
procedure Eat; virtual; abstract;
property Name: string read FName write FName;
end;
//子类
TStudent = class(TPerson)
public
procedure Eat; override;
end;
implemention
constructor TPerson.Create(AName: string);
begin
FName = AName;
end;
procedure TStudent.Eat;
begin
ShowMessage(Name + '用筷子吃饭');
end;
//调用的时候
var
S: TStudent;
S : = TStudent.Create('sunny'); //TPeron的构造函数自动成了TStuent的构造函数
S.Eat;
abstract class Person{
String name;
Person(){
System.out.println("Person无参");
}
Person(String name){
this.name = name;
}
abstract void eat();
}
class Student extends Person{
void eat(){
System.out.println(name + "-->用筷子吃饭");
}
Student(){
super();
}
Student(String name){ //这个方法可以省略吗,为什么写在这里这么丑???
super(name);
}
}
//使用
class Test{
public static void main(String args []){
Student s = new Student("sunny"); //如果上面省略了,这里怎么构造学生对象。
s.eat();
}
}
class Student extends Person{
void eat(){
System.out.println(name + "-->用筷子吃饭");
}
Student(){
super();
}
Student(String address){
super(name);//你不会想这里的address自动传给name吧
}
}
private String name;
public A(String name) {
this.name = name;
}
public void showName() {
System.out.println(name);
}
class B (extends class A):
private String name;
public void showName() {
System.out.println(name);
}
B b = new B("xxxx");
b.showName(); // print null?!