Java desde la entrada hasta los ejercicios del capítulo maestro - Capítulo 8

Ejercicio 1 encender una cerilla

Método 1: use el valor booleano que identifica si la cerilla está encendida para determinar el estado de la cerilla

interface Ignitable {
    
    
    void ignite();
}

class Match implements Ignitable {
    
    
    private boolean ignited = false;

    public void ignite() {
    
    
        if (!ignited) {
    
    
            System.out.println("火柴点燃了!");
            ignited = true;
        } else {
    
    
            System.out.println("火柴已经被点燃过了!");
        }
    }
}

Cree un objeto Match para usar:

Match match1 = new Match();
match1.ignite(); // 输出 "火柴点燃了!"
match1.ignite(); // 输出 "火柴已经被点燃过了!"

Match match2 = new Match();
match2.ignite(); // 输出 "火柴点燃了!"

Método 2: haga que el constructor sea privado, asegúrese de que el objeto de coincidencia solo se pueda crear una vez y ejecute el método de encendido una vez

public class StrikeMatch {
    
    

    /**
     * 综合练习1:划火柴 定义一个点燃接口,再定义一个火柴类实现点燃接口,
     * 每根火柴对象只能调用一次点燃方法,这种对象该如何创建?
     */

    public static void main(String[] args) {
    
    
        Match.createMatch();
        Match.createMatch();
    }
}

interface Ignite {
    
    
    void ignite();
}

class Match implements Ignite {
    
    

    /**
     * 创建火柴对象的时候则调用点燃方法
     */
    private Match() {
    
    
        ignite();
    }

    public static Match createMatch() {
    
    
        return new Match();
    }


    @Override
    public void ignite() {
    
    
        System.out.println( Math.random() + "火柴被点燃");
    }
}

Ejercicio 2 Corazón latiendo

package org.hj.chapter8;

public class BeatingHeart {
    
    

    /**
     * 综合练习2:跳动的心脏 心脏是动物的重要器官,不断跳动的心脏就意味着鲜活的生命力。
     * 现在创建一个人类,把心脏类设计为人类里面的一个成员内部类。心脏类有一个跳动的方法,
     * 在一个人被创建时,心脏就开始不断地跳动。
     */

    public static void main(String[] args) {
    
    
        new Person();
        new Person();
        new Person();
    }
}

class Person {
    
    
    public Person() {
    
    
        new Heart().beating();
    }

    public class Heart {
    
    
        public void beating() {
    
    
            System.out.println(Math.random() + "心脏开始跳动");
        }
    }
}

Ejercicio 3 comer fruta

package org.hj.chapter8;

public class EatFruit {
    
    

    /**
     * 综合练习3:吃水果 创建一个抽象的水果类,类中有一个获取水果名称的抽象方法。
     * 创建人类,人类有个吃的方法,参数类型为水果类型,并可以在控制台打印吃了什么。
     * 请用匿名类创建吃方法的参数,让人类吃苹果和香蕉。
     */

    public static void main(String[] args) {
    
    

        People people = new People();

        // 使用匿名类创建吃方法的参数,让人类吃苹果和香蕉
        people.eat(new Fruit() {
    
    
            @Override
            String getFruit() {
    
    
                return "苹果";
            }
        });
        people.eat(new Fruit() {
    
    
            @Override
            String getFruit() {
    
    
                return "香蕉";
            }
        });
    }
}

abstract class Fruit {
    
    

    abstract String getFruit();
}

class People {
    
    

    public void eat(Fruit fruit) {
    
    

        System.out.println("吃了一个" + fruit.getFruit());
    }
}

Ejercicio 4 implementación de clase anónima para dejar correr al cachorro

package org.hj.chapter8;

public class RunningDog {
    
    

    /**
     * 综合练习4:匿名类实现让小狗跑 参照下面的代码,创建Moveable接口的匿名子类对象,
     * 重写run()方法,执行该方法后会在控制台打印“小狗向前跑”字样。
     */

    public static void main(String[] args) {
    
    

        //创建匿名内部类对象
        new Moveable() {
    
    
            @Override
            public void run() {
    
    
                System.out.println("小狗向前跑");
            }
        }.run();//调用方法
    }
}

interface Moveable {
    
    
    void run();
}

Supongo que te gusta

Origin blog.csdn.net/dedede001/article/details/130284996
Recomendado
Clasificación