会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132413个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 3151楼

调用父类的方法失败

源码:

public class Test{
    public static void main(String[] args) {
        CarFunction newCar = new Car();
        //newCar.move();
        FlyCar flyCar = new FlyCar(newCar);
        //flyCar.fly();
        AICar aiCar = new AICar(flyCar);
        aiCar.AI();
    }
}

//定义接口
interface CarFunction{
    void move();    //抽象方法:移动方式
}

//具体的构建角色Car类
class Car implements CarFunction{
    public void move(){
        System.out.println("在陆上行驶的汽车");
    }
}

//装饰器角色
class SuperCar implements CarFunction{
    private CarFunction newCar;
    SuperCar(CarFunction newCar){
        this.newCar = newCar;
    }

    @Override
    public void move() {
        newCar.move();      //调用真实角色的行驶的方法
    }
}

//
class FlyCar extends SuperCar{
    public FlyCar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();        //调用父类的行驶方法
        this.fly();
    }

    public void fly(){
        System.out.println("拥有飞行功能的汽车");
    }
}

class AICar extends SuperCar{
    AICar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();
        this.AI();
    }

    public void AI(){
        System.out.println("拥有人工智能自动驾驶的汽车");
    }
}

class WaterCar extends SuperCar{
    WaterCar(CarFunction newCar){
        super(newCar);
    }

    @Override
    public void move() {
        super.move();
        this.water();
    }

    void water(){
        System.out.println("可以水上行驶的汽车");
    }
}

运行结果:


JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3153楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3157楼

2020 12 18------------------------

package com.bjsxt.dead;

public class Test {
    public static void main(String[] args) {
        //创建共享资源的对象
        Object money = new Object();
        Object water = new Object();
        //创建线程类的对象
        DeadLock d1 = new DeadLock(money, water);
        DeadLock d2 = new DeadLock(money, water);
        d1.flag = true;
        d2.flag = false;
        //启动线程
        d1.start();
        d2.start();
    }
}
package com.bjsxt.dead;

public class DeadLock extends Thread {
    private Object money;//钱
    private Object water;//水
    public boolean flag; //标识持有对象锁

    public DeadLock(Object money, Object water) {
        super();
        this.money = money;
        this.water = water;
    }

    @Override
    public void run() {
        if (flag) {//true时,持有“钱”的锁
            synchronized (money) {
                System.out.println("有钱,等水");
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (water) {
                    System.out.println("有水,等钱");
                }
            }
        } else {
            synchronized (water) {
                System.out.println("有水,等钱");
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (money) {
                    System.out.println("有钱,等水");
                }
            }
        }
    }
}

GQWUXL$3GNWJSW@~BGTI[`W.png为什么我打印到控制台是乱码,其他的代码都不会

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 3158楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 3159楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3161楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637