继承
编写程序,实现继承,并调用父类方法。
题目
1
:
(
1
)请按照以下要求设计类。
要求如下:
1
)设计
Animal
类。类中定义一个成员变量
animalName
,表示动物的名称,变量
animalName
是
String
类型,默认初始值。在该类中再定义一个成员方法
shout()
,表示动物
发出叫声的行为,该方法能输出名称为
animalName
的动物发出叫声,例如输出“波斯猫发
出叫声”。
2
)设计
Cat
类。使用关键字
extends
继承
Animal
类。
Cat
类中定义一个
public
类型的
构造方法,该构造方法拥有一个
String
类型的参数
catName
,通过该参数,为
Cat
类中继承
自
Animal
类的
animalName
成员变量赋值。
3
)设计一个测试类。类名为
ExtendsTest
,在
main
方法中定义一个
String
类型的
name
变量,并为它赋值为“波斯猫”,然后使用有参构造创建
Cat
类的对象,并使用对象的引用
变量调用
shout()
方法。
Aniaml类
public class Animal {
String animalName;
public void shout(){
System.out.println(animalName+"发出叫声");
}
}
Cat类
public class Cat extends Animal{
public Cat (String catName){
this.animalName = catName;//将catName的值传到animalName
}
}
ExtendsTest类
public class ExtendsText {
public static void main(String[] args) {
String name = "波斯猫";//将变量赋值给name
Cat cat = new Cat(name);//传参到Cat中的catName
cat.shout();//调用shout方法
}
}
运行结果:
重写
设计父类和一个子类,在子类里面通过
super
关键字去调用父类的成员变量和成
员方法,在子类的构造方法中使用
super
关键字调用父类的构造方法,在测试类里进行验证。
父类
public class Father {
int a = 10;
void A() {
System.out.println("我是父类Father的成员方法A");
}
}
class Son extends Father {
int a = 20;
void A() {
int a = 20;
super.A();//在子类中的A方法已经被重写, 用关键字super调用在父类中未被重写的A方法
System.out.println("我是子类Son的成员方法A");
System.out.println("父类a:" + super.a);
}
}
子类
public class Text {
public static void main(String[] args) {
Son son = new Son();
son.A();
System.out.println("子类a:"+son.a);
}
}
运行结果:
题目:
尽量少写相同的代码编写程序描述类层次,其中 Person 为父类,其属性包括姓 名,性别,出生日期等,方法为 printInfo()打印信息。教师 Tercher 还包括学校和工号属性; 学生 Student 还包括学校、学号、专业、年级和班级等属性;编写一个测试类 TestPerson, 在 main 方法中创建 1 名教师和一名学生对象,输出其属性信息。
三个类
public class Person {
static String name;
String sex;
String date;
void printlnfo() {
System.out.println("姓名:" + name);
System.out.println("性别:" + sex);
System.out.println("出生日期:" + date);
}
public Person(String name, String sex, String date) {
this.name = name;
this.sex = sex;
this.date = date;
}
public Person() {
}
}
class Teacher extends Person {
String CoName;
int JobNumber;
void Teacher() {
System.out.println("学校名字:" + CoName);
System.out.println("工号:" + JobNumber);
}
public Teacher(String CoName, int JobNumber) {
this.JobNumber = JobNumber;
this.CoName = CoName;
}
}
class Student extends Person {
String CoName;
int StudentId;
String major;
int grade;
int class0;
public Student(String CoName, int StudentId, String major, int grade, int class0) {
this.CoName = CoName;
this.StudentId = StudentId;
this.major = major;
this.grade = grade;
this.class0 = class0;
}
@Override
void printlnfo() {
super.printlnfo();
System.out.println("学校名字:" + CoName);
System.out.println("学号:" + StudentId);
System.out.println("专业:" + major);
System.out.println("年级:" + grade);
System.out.println("班级:" + class0);
}
}
TestPerson
public class TestPerson {
public static void main(String[] args) {
Teacher teacher = new Teacher("成都工业学院", 2134);
teacher.name = "张三";
teacher.sex = "男";
teacher.date = "1976-12-9";
teacher.printlnfo();
teacher.Teacher();
System.out.println("======================================");
Student student = new Student("成都工业学院", 111, "软件工程", 1, 3);
Student.name = "小一";
student.sex = "女";
student.date = "2003-1-1";
student.printlnfo();
}
}
运行结果: