P436作业1- P441作业(抽象、接口实参、枚举)

P436抽象相关

image-20220110162140111

第一题,首先类加载,创建new c1的时候,color等于之前的red,没有进行j静态初始化

第二题

public class Homework {
 public static void main(String[] args) {
     System.out.println(F.getNum());//100100
     System.out.println(F.getNum());
     System.out.println(new F().getsNum());
     System.out.println(new F().getsNum());
     System.out.println(new F().getsNum());//100500
 }
}
class F{
 private static int Num=10000;
 private static int sNum;
​
 public static int getNum() {
     Num+=100;
     return Num;
 }
public F() {
     sNum=getNum();
 }
​
 public static int getsNum() {
     return sNum;
 }
}

第三题

public class Homework {
    public static void main(String[] args) {
        Animal cat1=new Cat();
        Animal dog1=new Dog();
        cat1.shout();
        dog1.shout();
    }
}
abstract class Animal{
    public abstract void shout();
}
class Cat extends Animal{
    @Override
   public  void shout() {
        System.out.println("猫喵叫");
    }
}
class Dog extends Animal{
    @Override
    public void shout() {
        System.out.println("狗吠中");
    }
}

P437接口作为实参

image-20220110192004918

public class InterClassExercise01 {
    public static void main(String[] args) {
        f1(new IL() {
            @Override
            public void show() {
                System.out.println("z这个是一副画....");
            }
        });//首先匿名类是一个对象,其次f1(实参为对象));
    }
    //静态方法,形参是接口类型
    public static void f1(IL il){
        il.show();
    }
}
interface IL{
    void show();
}
package Homework;
​
public class Work {
    public static void main(String[] args) {
        //接口不能实例话,其中的方法省略abstract
        //普通类实现接口必须要所有方法,而ab类不需要
        //匿名内部类还是一个对象//成员内部类不用static修饰//静态内部类
        Cellphone cellphone = new Cellphone();
        cellphone.testwork(new CP() {//匿名内部类作为实参直接传递
            @Override
            public double test(double n1) {
                return 0;
            }
        },4);
    }
}
interface CP{
    public double test(double n1);
}
class Cellphone{
    public void testwork(CP cp,double n1){
        double res=cp.test(n1);
        System.out.println("计算结果n1="+n1);
    }
}
//最后输出计算n1=4.0;
//修改1下
public class Work {
    public static void main(String[] args) {
        Cellphone cellphone = new Cellphone();
        cellphone.testwork(new CP() {//匿名内部类作为实参直接传递
            @Override
            public void test(double n1) {
                System.out.println("n1等于多少"+n1);
            }
        },4);
    }
}
interface CP{
    public void test(double n1);
}
class Cellphone{
    public void testwork(CP cp,double n1){
        cp.test(n1);
        System.out.println("计算结果n1="+n1);
    }
}
//n1等于多少4.0
//计算结果n1=4.0

P438局部内部类变量

public class Homwork02 {
​
    public static void main(String[] args) {
        //局部内部类,内访问外直接,外访问创对象
        new A().test();
    }
}
class A{
    private String name="name1";
    public void test(){
        class B{
            private String name="Bname";
            public void show(){
                System.out.println("B的name="+name);
                System.out.println("Outer的name"+A.this.name);
            }//重名的方法
        }new B().show();
    }
}

P439家庭作业4

image-20220110223041658.png

//比较难
package Homework;
​
public class Homework06 {
    public static void main(String[] args) {
        Person1 tang=new Person1("唐",new Horse());
        //如何优化,可以先判断是适合H还是B
        tang.passRiver();
        tang.fire();
        tang.common();
    }
}
interface Vehic{
    public void work();
}
class Horse implements Vehic{
    @Override
    public void work(){
        System.out.println("马儿前进");
    }
}
class Boat implements Vehic{
    @Override
    public void work(){
        System.out.println("河面要乘船");
    }
}
class Plan implements Vehic{
    @Override
    public void work(){
        System.out.println("坐飞机");
    }
}
class VEfactory{
    //认为马儿始终是一匹
    //饿汉式
    private static final Horse horses=new Horse();
    public static Horse getHorse(){//将方法做成static非常的方便
       return horses;
    }
    public  static Boat getBoat(){
        return new Boat();
    }
    public static Plan getPlan(){
        return new Plan();
    }
}
class Person1 {
    private String name;
    private Vehic vehic;
​
    public Person1(String name, Vehic vehic) {
        this.name = name;
        this.vehic = vehic;
    }
    //实例化,封装方法
    public void passRiver(){
       // Boat boat=VEfactory.getBoat();//从工厂中获得马
       // boat.work();
        if(!(vehic instanceof Boat)){//是空,以及不是船,都去获取
            vehic=VEfactory.getBoat();
        }
        vehic.work();//这里是接口调用
    }
    public void common(){
        if(!(vehic instanceof Horse)){//这里是多肽
            vehic=VEfactory.getHorse();
        }
        vehic.work();//这里是接口调用
    }
    public void fire(){
        if(!(vehic instanceof Plan){
            vehic=VEfactory.getPlan();
        }
        vehic.work();
    }
}

P440枚举和switch的结合

package Homework;
​
public class H7 {
    public static void main(String[] args) {
        new Car(70).getAir().flow();
    }
}
class Car{
    private double tem;
        class Air{//成员对象
            public void flow(){
                if(getTem()>40){
                    System.out.println("冷气");
                }else if(getTem()<0){
                    System.out.println("暖气");
                }else{
                    System.out.println("关空调");
                }
            }
        }
    public Car(double tem) {
        this.tem = tem;
    }
    public double getTem() {
        return tem;
    }
    public Air getAir(){
            return new Air();
    }
}
package Homework;
​
public class H8 {
    public static void main(String[] args) {
        Color.RED.show();//输出r255g0b0
        Color blue=Color.BLUE;
        switch (blue){//括号中放入枚举对象,在case后直接写入枚举对象
            case RED:
                System.out.println("匹配到红色");
                break;
            case BLUE:
                System.out.println("匹配到蓝色");
                break;
            default:
                System.out.println("没有匹配到");
        }
    }
}
enum Color implements IN{
    RED("255","0","0"),BLUE("0","0","225");
    private String redValues;
    private String greenValues;
    private String blueValues;
​
    Color(String redValues, String greenValues, String blueValues) {
        this.redValues = redValues;
        this.greenValues = greenValues;
        this.blueValues = blueValues;
    }
    @Override
    public void show() {
        System.out.println("r"+redValues+"g"+greenValues+"b"+blueValues);
    }
}
interface IN{
    public void show();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值