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

简介: 关于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);
    }
}

7eb5f45cc7d64be5917fd6e08da9e6c4.png


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


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


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


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


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


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

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


1.直接赋值法

6effb62af8814b60bc683449c375fa54.png


2.默认初始化

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

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

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


4097499c4d3c41d1b4ae624395b287e2.png


代码块执行顺序


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();
    }
}

79ee9473d7ed42afa69d099c3a981e78.png

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

toString 方法的理解

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

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

相关文章
|
8月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
78 4
|
8月前
|
编译器 C++
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
113 0
|
3月前
|
存储 编译器 C++
【C++】深入探索类和对象:初始化列表及其static成员与友元(一)
【C++】深入探索类和对象:初始化列表及其static成员与友元
|
2月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
118 5
|
8月前
|
存储 算法 C语言
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的
122 0
|
3月前
|
C++
【C++】深入探索类和对象:初始化列表及其static成员与友元(二)
【C++】深入探索类和对象:初始化列表及其static成员与友元
|
3月前
|
编译器 C++
【C++】深入探索类和对象:初始化列表及其static成员与友元(三)
【C++】深入探索类和对象:初始化列表及其static成员与友元
|
6月前
|
编译器 C++
【C++】类和对象⑤(static成员 | 友元 | 内部类 | 匿名对象)
📚 C++ 知识点概览:探索类的`static`成员、友元及应用🔍。
|
7月前
类和对象(8):explicit,static成员,友元,内部类
类和对象(8):explicit,static成员,友元,内部类
|
8月前
|
C++
类与对象(三)--static成员、友元
类与对象(三)--static成员、友元

热门文章

最新文章