java学习Day4

实例化对象时(声明、初始化块、构造函数)初始化的顺序

package day7;

public class Chushihua {
    public String data = getdata("声明"); //声明初始化
    {
        data = getdata("初始化块");//静态初始化块 初始化
    }
    public Chushihua(){
        data = getdata("构造函数");//构造函数初始化
    }
    public static String getdata(String str){
        System.out.println("data:"+str);
        return "data:"+str;
    }
    public static void main(String[] args) {
        new Chushihua();
        }
    }

单例模式1

package day7;

class  Danli{
        private Danli(){

        }
        static private Danli name = new Danli();
        static Danli getdanli(){
            return name;
        }
}
public class Danlimoshi {
    public static void main(String[] args) {
        Danli name1 = Danli.getdanli();
        Danli name2 = Danli.getdanli();
        Danli name3 = Danli.getdanli();
        System.out.println(name1 == name2);
        System.out.println(name3 == name2);
    }
}

单例模式2

package day7;


class  Danli2{
        private Danli2(){

        }
        static private Danli2 name;
        static Danli2 getdanli(){
            if (name==null) {

                return name = new Danli2();
            }
            return name;
        }
    }
    public class Danlimoshi2 {
        public static void main(String[] args) {
            Danli2 name1 = Danli2.getdanli();
            Danli2 name2 = Danli2.getdanli();
            Danli2 name3 = Danli2.getdanli();
            System.out.println(name1 == name2);
            System.out.println(name3 == name2);
        }
    }

单例模式:

1.构造方法私有化
2.静态属性指向实例
3.静态方法返回指向实例的静态属性

枚举

package day7;


public class MeiJu {
    enum meiju{
        TANK,WIZARD,ASSASSIN,ASSIST,WARRIOR,RANGED,PUSH,FARMING
    }
    public static void main(String[] args) {
        for (meiju i : meiju.values()){
            switch (i){
                case TANK:
                    System.out.println(i);
                    break;
                case WIZARD:
                    System.out.println(i);
                    break;
                case ASSASSIN:
                    System.out.println(i);
                    break;
                case ASSIST:
                    System.out.println(i);
                    break;
                case WARRIOR:
                    System.out.println(i);
                    break;
                case RANGED:
                    System.out.println(i);
                    break;
                case PUSH:
                    System.out.println(i);
                    break;
                case FARMING:
                    System.out.println(i);
                    break;
                default:
                    System.out.println("这是啥啊");

            }
        }
    }
}

继承父类后,子类重写父类中的方法

package Day8;

public class Item {
    String name;
    int price;
    void effect(){
        System.out.println("蓝瓶使用后,回蓝");
    }
}
package Day8;

public class Magicpotion extends Item{
    void effect(){
        System.out.println("蓝瓶可以回蓝");
    }
    public static void main(String[] args) {
    Magicpotion test = new Magicpotion();
    test.effect();
    }
}

多态:父类或者接口引用指向具有父类方法重写的子类

接口

package Day8;

public interface Mortal {
    void die(String name);
}

Hero

package Day8;

public class Hero {
    String name;
    public Hero() {
    }
    public void kill(Mortal i){
        i.die(name);
    }
    Hero(String i){
        name = i;
    }
}

子类ADhero

package Day8;

public class ADhero extends Hero implements Mortal {
    ADhero(String i) {
        name = i;
    }
    public void die(String name){
        System.out.println(name+"击杀了AD"+this.name);
    }
}

子类APhero

package Day8;

public class APhero extends Hero  implements Mortal {
    APhero(String i) {
        name = i;
    }
    public void die(String name){
        System.out.println(name+"击杀了AP"+this.name);
    }
}

主类

package Day8;

public class Main {
    public static void main(String[] args) {
    Hero gailun = new Hero("盖伦");
    ADhero hanbing = new ADhero("寒冰射手");
    APhero ruizi = new APhero("瑞兹");
    gailun.kill(hanbing);
    gailun.kill(ruizi);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值