测试案例一:
package ChouXiang;
/*
猫狗案例:
具体事物:猫。狗
共性:姓名,年龄,吃饭
分析:从具体到抽象
猫:
成员变量:姓名,年龄
构造方法:无参,带参
成员方法:吃饭(吃鱼)
狗:
成员变量:姓名,年龄
构造方法:无参,带参
成员方法:吃饭(吃肉)
因为由共性的内容,所以提取了一个父类,动物
但是又由于吃饭的内容不一样,所以吃方法方法是可以抽象的
而方法是抽象的类,类就必须定义为抽象类
实现:从抽象到具体
动物类:
成员变量:姓名,年龄
构造方法:无参,带参
成员方法:吃饭();
狗类:
继承自动物类
重写吃饭();
猫类:
继承自动物类
重写吃饭();
*/
abstract class Animal{
private int age;
private String name;
public Animal() {};
public Animal(String name,int age) {
this.name=name;
this.age=age;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age=age;
}
public int getAge() {
return age;
}
public void eat() {
System.out.println("吃饭");
}
}
class Cat extends Animal{
public Cat() {}
public Cat(String name,int age) {
super(name,age);
}
public void eat() {
System.out.println("猫吃鱼");
}
}
class Dog extends Animal{
public Dog() {}
public Dog(String name,int age) {
super(name,age);
}
public void eat() {
System.out.println("狗吃肉");
}
}
public class AbstractTest1 {
public static void main(String[] args) {
//具体类用法
Dog d=new Dog();
d.setName("内瑟斯");
d.setAge(12);
System.out.println("姓名:"+d.getName()+"---年龄:"+d.getAge());
d.eat();
Dog d2=new Dog("内瑟斯",12);
System.out.println("姓名:"+d2.getName()+"---年龄:"+d2.getAge());
d2.eat();
System.out.println("--------------------------------------");
//多态测试
Animal a=new Dog();
a.setName("内瑟斯");
a.setAge(12);
System.out.println("姓名:"+a.getName()+"---年龄:"+a.getAge());
a.eat();
Animal a2=new Dog("内瑟斯",12);
System.out.println("姓名:"+a2.getName()+"---年龄:"+a2.getAge());
a2.eat();
}
}
测试案例二:
package ChouXiang;
/*
老师案例
具体事物:基础班老师,就业办老师
共性:姓名,年龄,讲课
分析:
基础班老师:姓名,年龄,讲课
就业办老师:姓名,年龄,讲课
实现:
老师类
基础班老师
就业班老师
*/
abstract class Teacher{
private int age;
private String name;
public Teacher() {};
public Teacher(String name,int age) {
this.name=name;
this.age=age;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age=age;
}
public int getAge() {
return age;
}
public abstract void teach();
}
class JiChu extends Teacher{
public JiChu() {}
public JiChu(String name,int age) {
super(name,age);
}
public void teach() {
System.out.println("讲基础");
}
}
class JiuYe extends Teacher{
public JiuYe() {}
public JiuYe(String name,int age) {
super(name,age);
}
public void teach() {
System.out.println("将就业");
}
}
public class AbstractTest2 {
public static void main(String[] aegs) {
Teacher t=new JiChu();
t.setAge(20);
t.setName("张三");
System.out.println("姓名:"+t.getName()+"---年龄:"+t.getAge());
t.teach();
Teacher t2=new JiChu("张三",20);
System.out.println("姓名:"+t2.getName()+"---年龄:"+t2.getAge());
t.teach();
}
}