Java抽象+多态的简单应用

一、抽象

1.抽象:使用abstract声明的类叫作抽象类,当父类的某些方法不确定,就可以用抽象类。

(1)抽象类是一种模板,不能被实例化;

(2)子类继承抽象类,如果子类不是抽象类,就要实现基类中全部的抽象方法;如果子类是抽象类,可以不用写抽象方法、也可以重写抽象方法;

2.抽象类和接口的区别

(1)抽象方法是抽象类里边的;

(2)抽象方法是相对接口而言的,接口必须实现基类中的全部方法,抽象类只实现抽象方法,不用实现普通方法

二、多态

1.多态:同一种行为,在子类中有有不同的体现。多态分为运行时多态和编译时多态。

2.实现多态需要做的3件事:

(1)继承

(2)重写

(3)父类的引用指向子类的对象;

例:父类 Person 子类 Student,可以这样定义 Person p = new Student();

三、代码(抽象+多态)

1.基类

public abstract  class Teacher {
     private String name;
     private int 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  abstract void teacherLession();
     public void sleep() {
         System.out.println(getName()+"正在睡觉");
     }
}

2.抽象类

//javateacher
public class JavaTeacher extends Teacher {
    @Override
    public void teacherLession() {
        System.out.println(getName()+"正在讲Java");
    }
}

//
PHPTeacher 
public class PHPTeacher extends Teacher {
    @Override
    public void teacherLession() {
        System.out.println(getName()+"正在讲PHP");
    }
}

//leader
public class Leader {
    public void checkTeacher(Teacher t){
        System.out.println("听课开始");
        t.teacherLession();
        System.out.println("听课结束");
    }
}

3.测试

public class testAbstract {
    public static void main(String[] args) {
        Teacher jt=new JavaTeacher();
        jt.setName("Java老师");
        Leader l=new Leader();
        l.checkTeacher(jt);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值