
在类中this.属赋值,则外部创建对象调用其值也会随之一样
package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
*/
/*1. 在Frock类中声明私有的静态属性currentNum[int类型],初始值为100000,作为衣服出
厂的序列号起始值。
2. 声明公有的静态方法getNextNum;作为生成上衣唯一序列号的方法。每调用一次,将
currentNum增加100,并作为返回值。
3. 在TestFrock类的main方法中,分两次调用getNextNum方法,获取序列号并打印输出。
4. 在Frock类中声明serialNumber(序列号)属性,并提供对应的get方法;
5. 在Frock类的构造器中,通过调用getNextNum方法为Frock对象获取唯一序列号,赋给
serialNumber属性。
6. 在TestFrock类的main方法中,分别创建三个Frock对象,并打印三个对象的序列号,验
证是否为按100递增。*/
public class test01_ {
    public static void main(String[] args) {
        System.out.println(Frock.getNextNum());
        System.out.println(Frock.getNextNum());
        Frock frock = new Frock();
        Frock frock1 = new Frock();
        Frock frock2 = new Frock();
        System.out.println(frock.getSerialNumber()+" "+frock1.getSerialNumber()+" "+frock2.getSerialNumber()
        );
    }
}
class Frock{
    private int serialNumber;
    private static int currentNum=100000;
    public Frock() {
        this.serialNumber = getNextNum();
    }
    public  static  int getNextNum(){
        currentNum+=100;
        return currentNum;
    }
    public int getSerialNumber() {
        return serialNumber;
    }
}
结果:

package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
*/
/*按要求实现下列问题:
1. 动物类Animal包含了抽象方法 shout();
2. Cat类继承了Animal,并实现方法shout,打印“猫会喵喵叫”
3. Dog类继承了Animal,并实现方法shout,打印“狗会汪汪叫”
4. 在测试类中实例化对象Animal cat=new Cat(),并调用cat的shout方法
5. 在测试类中实例化对象Animal dog=new Dog(),并调用dog的shout方法*/
public class test02 {
    public static void main(String[] args) {
        Animal cat=new Cat();
        cat.shout();
        Animal dog=new Dog();
        dog.shout();
    }
}
abstract class Animal{
    abstract void shout();
}
class Cat extends Animal{
    @Override
    void shout() {
        System.out.println("猫会喵喵叫");
    }
}
class Dog extends Animal{
    @Override
    void shout() {
        System.out.println("狗会汪汪叫");
    }
}
结果:
package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
1. 计算器接口具有work方法,功能是运算,有一个手机类Cellphone,定义方法testWork
测试计算功能,调用计算接口的work方法,
2. 要求调用CellPhone对象 的testWork方法,使用上 匿名内部类
*/public class test03 {
    public static void main(String[] args) {
//        CallPhone callPhone = new CallPhone();
//        callPhone.testWork();
        CallPhone callPhone = new CallPhone();
        callPhone.testwork(new Io() {
            @Override
            public void work(int a, int b) {
            }
        }//Io io
        ,6,7);
    }
}
//class ui implements Io{
//
//    @Override
//    public void work(int a, int b) {
//        System.out.println(a+b);
//    }
//}
class CallPhone{
    //一种方法
//   public void testWork(){
//      Io io= new Io(){
//           @Override
//           public void work(int a, int b) {
//               System.out.println(a+b);
//           }
//       };
//      io.work(3,4);
//
//
//
//    }
    //第二种
    public void testwork(Io io,int a,int b)
    {
        System.out.println(a+b);
    }
}
interface Io{
    void work(int a,int b);
}
解析:

package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
5.编程题 Homework05.java
内部类
1. 编一个类A,在类中定义局部内部类B,B中有一个私有常量name,有一个方法show()打
印常量name。进行测试
2. 进阶:A中也定义一个私有的变量name,在show方法中打印测试
*/public class test04 {
    public static void main(String[] args) {
        new A().test();
    }
}
class A{
    private String name="xiaom";
    public void test(){
        class B{
            private String name="xiaome";
            void show(){
                System.out.println(name+A.this.name);
            }
        }
        B b = new B();
        b.show();
        
    }
}
package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
1. 有一个交通工具接口类Vehicles,有work接口
2. 有Horse类和Boat类分别实现Vehicles
3. 创建交通工具工厂类,有两个方法分别获得交通工具Horse和Boat
4. 有Person类,有name和Vehicles属性,在构造器中为两个属性赋值
5. 实例化Person对象“唐僧”,要求一般情况下用Horse作为交通工具,遇到大河时用Boat
作为交通工具
*/public class test05 {
    public static void main(String[] args) {
        Person Tang = new Person("唐僧", new Horse());
        Tang.PassRiver();
        Tang.Common();
    }
}
class Person{
     private String name;
     Vehicles vehicles;
    public Person(String name, Vehicles vehicles) {
        this.name = name;
        this.vehicles=vehicles;
    }
    //题中说,要人在有河流的时候选择船,平时用马,那么就要想到使用方法,可以在你需要的时候调用你想要的
    //然后获取你所需的东西
    //因为在一开始我们需要给人默认一个交通工具,所以我们调用方法时需要判断一下,当前是否已有该工具,如果有了就不再给他了
    public void PassRiver() {
        if (!(this.vehicles instanceof Boat) ){
            this.vehicles = Workshope.getTool();
        }
       this.vehicles.work();
    }
        public void Common () {
            if (!(this.vehicles instanceof Horse)) {
                this.vehicles = Workshope.getTools();
            }
                this.vehicles.work();
        }
}
class Workshope{
    private static Boat boat=new Boat();
    private static  Horse horse=new Horse();
    //私有化构造器一定不能忘记
    private Workshope(){}
    //没必要创建这个类的对象。我们知识需要使用它的方法,所以使用Static
    //但是,没必要换一次,就换一批新马一辆新船,所以我们可以采用饿汉式优化
   static public Horse getTools(){
        return horse;
    }
    static public Boat getTool()
    {
        return boat;
    }
}
class Horse  implements Vehicles {
    @Override
    public void work() {
        System.out.println("没河流,我要骑马");
    }
}
class Boat implements Vehicles{
    @Override
    public void work() {
        System.out.println("有河流,我要坐船");
    }
}
interface Vehicles{
    void work();
}
package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
有一个Car类,有属性temperature(温度),车内有Air(空调)类,有吹风的功能flow,
Air会监视车内的温度,如果温度超过40度则吹冷气。如果温度低于0度则吹暖气,如果在这之
间则关掉空调。实例化具有不同温度的Car对象,调用空调的flow方法,测试空调吹的风是否
正确.
*/public class test06 {
    public static void main(String[] args) {
        Car car = new Car(19);
        car.test();
        Car car1 = new Car(90);
        car1.test();
        new Car(-1).test();
        Car car2 = new Car(80);
        //展示方式二
        car2.getAir().flow();
    }
}
class Car{
    double temperature;
   class Air{
       void flow(){
           if (temperature>40)
               System.out.println("热风");
           else if (temperature<0)
               System.out.println("冷风");
           else
               System.out.println("关闭");
       }
    }
    void test(){
        Air air = new Air();
        air.flow();
    }
    //展示方式二
    public Air getAir()
    {
        return new Air();
    }
    public Car(double temperature) {
        this.temperature = temperature;
    }
}
结果:

package com.test01;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
枚举类
1. 创建一个Color枚举类
2. 有RED,BLUE,BLACK,YELLOW,GREEN这个五个枚举值/对象;
3. Color有三个属性redValue,greenValue, blueValue,
4. 创建构造方法,参数包括这三个属性,
5. 每个枚举值都要给这三个属性赋值,三个属性对应的值分别是
6. red: 255,0,0 blue:0,0,255 black:0,0,0 yellow:255,255,0 green:0,255,0
7. 定义接口,里面有方法show,要求Color实现该接口
8. show方法中显示三属性的值
9. 将枚举对象在switch语句中匹配使用
*/public class test07 {
    public static void main(String[] args) {
        Color blue = Color.BLUE;
        blue.show();
        switch (blue)
        {
            case RED:
                System.out.println("匹配到红色");
                break;
            case BLUE:
                System.out.println("匹配到蓝色");
                //。。。。
        }
    }
}
enum Color implements Io_{
    RED(255,0,0),BLUE(0,0,255),
    BLACK(0,0,0),YELLOW(255,255,0),
    GREEN(0,255,0);
    private double redValue,greenValue, blueValue;
    Color(double redValue, double greenValue, double blueValue) {
        this.redValue = redValue;
        this.greenValue = greenValue;
        this.blueValue = blueValue;
    }
    @Override
    public void show() {
        System.out.println( "Color{" +
                "redValue=" + redValue +
                ", greenValue=" + greenValue +
                ", blueValue=" + blueValue +
                '}');
    }
}
interface Io_{
    void show();
}



















