关于static修饰的成员方法成员成员变量的相关讨论

先给大家带来基础的代码

class Animal{
    public String name;
    public int age;
    public void wash(){
        System.out.println(name+"正在洗澡");
    }
    
}



class   Cat  extends  Animal {
    public void xiaomi() {
        System.out.println(name + "正在喵喵叫");
    }
}
    
    class Dog extends Animal{
        public void xiaowang(){
            System.out.println(name+"正在汪汪叫");
        }
    }






public class TestDemo {
    public static void main(String[] args) {
        Cat cat=new Cat();
        cat.name="咪咪";
        cat.age=2;
        cat.wash();
        cat.xiaomi();
        Dog  dog=new Dog();
        dog.name="贝贝";
        dog.age=3;
        dog.xiaowang();
        dog.wash();
    }
}

Animal 是父类,将猫和狗都具有的特性放在父类中可以避免代码冗长,所以使用继承

public class Student {
    public String name;
    public int age;
    public  static String classroom="高三一班";

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void main(String[] args) {
        Student student1=new Student("魏鸿雁",18);
        Student student2=new Student("王一博",18);
        System.out.println(student1.classroom);
        System.out.println(student2.classroom);
        

    }
}

 发现了吗,班级是静态成员变量,但是仍然可以用实例化的对象去调用

也就是说,静态的成员变量可以用实例化的对象调用,也可以用类名直接调用

被static修饰的成员方法叫做静态成员方法,被static修饰的成员变量叫做静态成员变量被static修饰的叫做类对象,类方法,属于这个类,且静态的方法对象只编译一次

不属于对象,属于类,因此通过类名直接调用

非静态成员方法内部可以直接调动静态方法,静态方法内部不可以直接调用非静态的方法,因为调用非静态的方法的时候,必须通过new 出的对象来调用

静态方法中是不能用this的,

下面来说一说静态变量的初始化

1.直接赋值法

2.默认初始化

这个就是上一期说的那个默认值表中可以查到

3.可以通过提供get和set方法,进行初始化

alt+insert键,constructer中的getter and  setter方法

 

代码块执行顺序

public class Student {
    public String name;
    public int age;
    public  static String classroom="高三一班";
    public static int height;

    public Student() {
        System.out.println("不带参数的构造方法");
    }

   /* public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }*/
   /* public Student(String name, int age,int he) {
        this.name = name;
        this.age = age;
        height=he;
    }*/
    static {
        System.out.println("静态代码块");
    }
    {

        age=12;
        System.out.println("实例代码块");
    }

    public static int getHeight() {
        return height;

    }

    public static void func(){
        {
            System.out.println("定义在方法内部叫做普通代码块");
        }
    }
    public static void setHeight(int height) {
        Student.height = height;
    }

    @Override
    public String toString() {
        System.out.println("aaa");
        return "bbb";
    }

    public static void main(String[] args) {
        /*Student student1=new Student("魏鸿雁",18);
        Student student2=new Student("王一博",18);*/
      /*  System.out.println(student1.classroom);
        System.out.println(student2.classroom);
        student1.setHeight(2);
        System.out.println(getHeight());
        System.out.println(student1);*/
        Student student=new Student();
        Student.func();


    }
}

经过实践,我们发现执行顺序为:静态代码块>非静态代码块>不带参数的构造方法

 toString 方法的理解

这是源码,我们在写这个代码的时候,用到了重写,把return的里面内容改变,也可以

今天的讲解就到这,我们下一期讲继承!!!886🎉🎉🎉 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值