- 案例:老师和学生
需求:定义老师类和学生类,然后写代码进行测试;最后找到老师类和学生类中的共性内容,抽取出一个父类,用继承的方式改写代码,并进行测试。
分析:
(1)定义老师类(姓名、年龄、教书())
(2)定义学生类(姓名、年龄、学习())
(3)定义测试类,写代码测试
(4)共性抽取父类,定义人类(姓名、年龄)
(5)定义老师类,继承人类,并给出自己特有方法:教书();
(6)定义学生类,继承人类,并给出自己特有方法:学习();
(7)定义测试类,写代码测试。
完整代码:
第一部分:
package com.lizi1;
public class Teacher {
private String name;
private int age;
public Teacher() {
}
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void teache(){
System.out.println("教书育人");
}
}
package com.lizi1;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void study(){
System.out.println("好好学习");
}
}
package com.lizi1;
public class Demo {
public static void main(String[] args) {
Teacher t1 = new Teacher();
t1.setName("Tom");
t1.setAge(20);
System.out.println(t1.getName()+","+t1.getAge());
t1.teache();
Teacher t2 = new Teacher("Bob",30);
System.out.println(t2.getName()+","+t2.getAge());
t2.teache();
}
}
运行结果:
Tom,20
教书育人
Bob,30
教书育人
第二部分:
package com.lizi2;
public class human {
private String name;
private int age;
public human() {
}
public human(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.lizi2;
public class Teacher extends human{
public Teacher(){}
public Teacher(String name,int age){
// this.name = name;
// this.age = age;
super(name,age);
}
public static void teach(){
System.out.println("教书育人");
}
}
package com.lizi2;
import com.lizi1.Teacher;
public class Demo {
public static void main(String[] args) {
Teacher t1 = new com.lizi1.Teacher();
t1.setName("Tom");
t1.setAge(20);
System.out.println(t1.getName() + "," + t1.getAge());
t1.teache();
Teacher t2 = new Teacher("Bob", 30);
System.out.println(t2.getName() + "," + t2.getAge());
t2.teache();
}
}
运行结果:
Tom,20
教书育人
Bob,30
教书育人
- 案例:猫和狗
需求:请采用继承的思想实现猫和狗的案例,并在测试类中进行测试。
分析:
① 猫:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:get/set方法,抓老鼠()
② 狗:
成员变量:姓名、年龄
构造方法:无参、带参
成员方法:get/set方法,看门()
③ 共性:
成员变量:姓名、年龄;
构造方法:无参、带参
成员方法:get/set方法
思路:
(1)定义动物类(Animal)
成员变量:姓名、年龄;
构造方法:无参、带参
成员方法:get/set方法
(2)定义猫类(Cat),继承动物类
构造方法:无参、带参
成员方法:抓老鼠()
(3)定义狗类(Dog),继承动物类
构造方法:无参、带参
成员方法:看门()
(4)定义测试类(AnimalDemo),写代码测试
完整代码:
package com.lizi3;
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.lizi3;
public class Cat extends Animal {
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
public static void mouse() {
System.out.println("抓老鼠");
}
}
package com.lizi3;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
public static void door(){
System.out.println("看门");
}
}
package com.lizi3;
public class Demo {
public static void main(String[] args) {
Cat c1 = new Cat();
c1.setName("mimi");
c1.setAge(3);
System.out.println(c1.getName() + "," + c1.getAge());
c1.mouse();
Cat c2 = new Cat("mimi2", 4);
System.out.println(c2.getName() + "," + c2.getAge());
c2.mouse();
Dog d1 = new Dog();
d1.setName("qq");
d1.setAge(5);
System.out.println(d1.getName() + "," + d1.getAge());
d1.door();
Dog d2 = new Dog("pp", 4);
System.out.println(d2.getName() + "," + d2.getAge());
d2.door();
}
}
运行结果:
mimi,3
抓老鼠
mimi2,4
抓老鼠
qq,5
看门
pp,4
看门