main方法补充 static关键字 单例模式 继承

本文探讨了Java中的main方法参数用途,特别是字符串数组args用于接收命令行参数。同时,讲解了单例模式的饿汉式和懒汉式实现,强调了在多线程环境下饿汉式的推荐使用。文章还通过示例展示了Person和Worker类的继承关系,说明了构造方法和成员初始化在继承中的行为。

main

public class MainTest {
    //打印main方法中的形参值 探索传的实参是什么

    public static void main(String[] args) {
        System.out.println("个数"+args.length);
        System.out.println("传递给main方法的实际参数为");
        for(int i =1;i<= args.length;i++){
            System.out.println(args[i]);
        }
    }
}

public 共有的:在任何位置都可以使用main方法

static 静态:隶属于类层级

void 无返回值:

main string 字符串类型的数组

[]args 一维数据

还是不知道在正常程序里 一维数组传的是什么 后续需要了解


static关键字和继承

想要只得到一个对象 且对象不能被随便null

单例类 单例设计模式eg windos的任务

饿汉式和懒汉式的区别就在于在调用对象的创建返回方法时 有没有已经创建好对象

考虑到多线程抢占资源的问题 推荐饿汉式 后续注意了解这个问题

懒汉式:
 

public class Singleton {
    //私有化构造方法
    private Singleton(){

    }
    //new 好对象送出去
    //对象层级 加静态 变成公共区域 升级为类层级
    // 但是只加静态 不能阻止外部对其进行修改 所以要进行分装 加private 将其成员变量私有化 不能通过类.的方法访问
    //但是加了private后 外部又不能获取了 还是通过内部的共有方法将其送出去
    private static Singleton sin = null;
    //提供公有的get方法 但是不加static必须得通过对象调用 所以改为静态共有 提升为类层
    public static Singleton getInstance(){
        Singleton sin = new Singleton();
        return  sin;
    }
}

饿汉式: 

public class Singleton {
    //私有化构造方法
    private Singleton(){

    }
    //new 好对象送出去
    //对象层级 加静态 变成公共区域 升级为类层级
    // 但是只加静态 不能阻止外部对其进行修改 所以要进行分装 加private 将其成员变量私有化 不能通过类.的方法访问
    //但是加了private后 外部又不能获取了 还是通过内部的共有方法将其送出去
    private static Singleton sin = new Singleton();
    //提供公有的get方法 但是不加static必须得通过对象调用 所以改为静态共有 提升为类层
    public static Singleton getInstance(){
        return  sin;
    }
}
public class SingletonTest {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2);
        //想要只能新建一个对象 需要从构造器入手

    }
}

加载流程

 继承

1.不能继承构造方案和私有方法

2.成员的初始化 继承的属性 调用的是父类的构造方法

3.父类包含子类

 

 

c class Person {
    private String name;
    private int age;
    public void eat(String food){
        System.out.println("food");
    }
    public void sleep(String time){
        System.out.println("time");
    }
    public  void play(String game){
        System.out.println("game");
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person() {
        System.out.println("我是人的无参构造函数");
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("我是人的有参构造函数");
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
public class Worker extends Person{
private int salary;

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public int getSalary() {
        return salary;
    }

    public Worker() {
        System.out.println("我是工人的无参构造函数");
    }

    public Worker(String name, int age, int salary) {
        super(name, age);
        this.salary = salary;
        System.out.println("我是工人的有参构造函数");
    }
    public  void show(){
        System.out.println("今天的砖头格外烫手");
    }
}

public class WorkTest {
    public static void main(String[] args) {
        Worker worker = new Worker("la",12,2200);
        //好像没有继承构造方法
        //不能继承构造方案和私有方法
        String s1 = worker.toString();
        System.out.println(s1);
        worker.eat("豆芽");
        worker.play("王者荣耀");
        worker.show();
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值