代码演示如下:
/*
编写Person父类,属性:姓名、性别、年龄,方法:自我介绍
*/
class Person{
//构造方法
public Person(){
}
public Person(String name,char sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
//实例属性
String name;
char sex;
int age;
//方法:自我介绍
public void sayHi(){
System.out.print("大家好,我叫:" + this.name + ",今年" + age + "岁,性别:" + sex);
}
}
//编写Student 继承 Person,独有属性:学号,独有方法:学习
class Student extends Person{
//构造方法
public Student(){
}
public Student(String name,char sex,int age,int id){
/*this.name = name;
this.sex = sex;
this.age = age; */
//以上三条语句,也可以编写为:
/*super.name = name;
super.sex = sex;
super.age = age; */
//调用父类的带三个参数的构造方法,完成对名字、年龄、性别属性的赋值
super(name,sex,age);
this.id = id;
}
//独有属性:学号
int id;
//独有学生方法
public void study(){
System.out.println("正在学习继承课程......");
}
//重写父类的sayHi()方法
/*public void sayHi(){
//第一种方法:
System.out.print("大家好,我叫:" + name + ",今年" + age + "岁,性别:" + sex + ",学号:" + id);
//第二种方法:
//调用父类中的sayHi方法,输出:name age sex的值
/*super.sayHi();
System.out.println(",学号:" + id);*/
//}
/*public void sayHi(){
//注意:1.当访问本类中的实例属性时,则使用name ---->等价于 this.name,首先在当前类中找该属性,如果没有找到则去父类中找该属性
//System.out.println("姓名:" + this.name + "\n年龄:" + this.age + "\n性别:" + this.sex + "\n学号:" + this.id);
//注意:2.当在子类中访问父类中的属性也可以使用super关键字,如:super.name,直接去当前子类对应的父类中找该属性
System.out.println("姓名:" + super.name + "\n年龄: " + super.age + "\n性别:" + super.sex + "\n学号:" + this.id);
} */
//子类独有的show方法,属性学生的姓名、性别、年龄、学号
/*public void show(){
//调用父类的sayHi输出名字、年龄、性别
//sayHi(); //等价于 this.sayHi();
//也可以编写为:
super.sayHi();
System.out.println(this.id);
}*/
public void sayHi(){
super.sayHi(); //当子类中方法与父类方法同名,但是访问父类的方法,则必须使用super.
System.out.println(",学号: " + id);
}
}
//编写Teacher 继承 Person,独有属性:工资,独有方法:教学
class Teacher extends Person{
//独有属性:工资
double salary;
//独有教学方法
public void teach(){
System.out.println("正在讲课。。。。。。。");
}
}
/*
测试类:
创建学生对象,调用方法
创建教师对象 ,调用方法
*/
class Test{
public static void main(String[] args){
//创建学生对象,调用方法
/*Student s = new Student();
s.study();
s.sayHi(); */
Student s2 = new Student("李四",'男',20,425001);
s2.sayHi();
}
}