java面向对象多态性

多态性

instanceof关键字

抽象类的应用

接口类的应用

接口的应用

1、多态性的体现:

             方法的重载和重写

             对象的多态性

2、对象多态性

            向上转型:程序会自动完成

                     父类  父类对象 = 子类实例

            向下转型:强制类型转换

                    子类  子类对象 = (子类)父类实例

对象多态性

package Polymorphism01.PolDemo01;

class A {
    public void tell1() {
        System.out.println("A----telll1");
    }

    public void tell2() {
        System.out.println("A----tell2");
    }
}

class B extends A {
    public void tell1() {
        System.out.println("B----tell1");
    }

    public void tell3() {
        System.out.println("B---tell3");
    }
}

public class PolDemo01 {
    public static void main(String[] args) {
/*
        多态性两种表现形式
        //向上转型
        B b = new B();
        A a = b;
        a.tell1();//tell1重写的
        a.tell2();
        运行结果
        B----tell1
        A----tell2

*/
        //向下转型
        A a = new B();
        B b = (B) a;
        b.tell1();
        b.tell2();
        b.tell3();
        /*
        运行结果:
        B----tell1
        A----tell2
        B---tell3
        */
    }
}

java面向对象多态性的应用

package Polymorphism01;

class A1 {
    public void tell1() {
        System.out.println("A-----------------------tell1");
    }
}

class B1 extends A1 {
    public void tell2() {
        System.out.println("B-----------------------tell2");
    }
}

class C1 extends A1 {
    public void tell3() {
        System.out.println("C----------------------tell3");
    }
}

class D1 extends A1 {
    public void tell4() {
        System.out.println("D1-----------------------tell4");
    }
}

public class PolDemo02 {
    public static void main(String[] args) {
        say(new B1());
        say(new C1());
        say(new D1());
    }

    //用到了java中的多态性 这种设计比较合理 慢慢领悟 减少多次创建
    public static void say(A1 a) {
        a.tell1();
    }
}

instanceof关键字应用

class A{
    public void tell1(){
        System.out.println("A-----tell1");
    }
    public void tell2(){
        System.out.println("A--------tell2");
    }
}
class B extends A {
    public void tell1(){
        System.out.println("B-----------tell1");
    }
    public void tell3(){
        System.out.println("B---------------tell3");
    }
}
public class instanceDemo {
    public static void main(String[] args){
        A a = new A();
        System.out.println(a instanceof A);//true a是A类的对象
        System.out.println(a instanceof B);//false 不是B类的对象

        A a1 = new B();  //B是A类的子类
        System.out.println(a1 instanceof A); //  向上转型   true
        System.out.println(a1 instanceof B); // 是B的对象  true
    }
}

 

抽象类应用

abstract class Person{
    private int age;
    private String name;
    //
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public abstract void want();
}

class Student extends Person{
    private int score;

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public Student(int age, String name, int score) {
        super(age, name);
        this.score = score;
    }

    @Override
    public void want() {
        System.out.println("姓名" + getName() + "年龄" + getAge() + "成绩" + getScore());
    }
}
class Worker extends Person{
    private int money;

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public Worker(int age, String name, int money) {
        super(age, name);
        this.money = money;
    }

    @Override
    public void want() {
        System.out.println("姓名" + getName() + "年龄" + getAge() + "工资" + getMoney());
    }
}
public class AbsDemo01 {
    public static void main(String[] args){
        Student s = new Student(10,"小明",100);
        s.want();
        Worker w = new Worker(35,"大明",10000);
        w.want();
    }
}

接口的使用nterface USB {
    void start();

    void stop();
}
class C {
    public static void work(USB u) {
        u.start();
        System.out.println("工作中");
        u.stop();
    }
}
class USBDisk implements USB {

    @Override
    public void start() {
        System.out.println("U盘开始工作");
    }
    @Override
    public void stop() {
        System.out.println("U盘停止工作");
    }
}

class Printer implements USB {

    @Override
    public void start() {
        System.out.println("打印机开始工作");
    }

    @Override
    public void stop() {
        System.out.println("打印机停止工作");
    }
}
public class lxImpl {
    public static void main(String[] args) {
        C.work(new USBDisk());
        C.work(new Printer());
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值