初学Java抽象二

测试案例一:

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();
        
    }
}
 

扫描二维码关注公众号,回复: 9322049 查看本文章
发布了88 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dai_ma_dong/article/details/95895424