属性:全局变量,成员变量 ,field
划分纬度:是否添加static
- 非static 实例变量(实例成员变量 非静态变量 对象级别(私有效果,对象独有,互不影响)
调用:对象名.属性
- static 类变量(类成员变量 静态变量 类级别(公共享有,不属于某个对象,各个对象都可以用,属于类级别)
调用:类名.属性 对象.属性(不推荐)
方法:成员方法 method
划分纬度:是否添加static
1.非static 非静态方法 实例方法(实例成员方法 对象级别(私有效果,对象独有,互不影响)
调用:对象名.方法 (有时 this super代表某个对象)
2.static 静态方法 类方法(类成员方法)
调用:类名.方法 对象.方法(不推荐)
方法调用:
1.同级别的方法(加或者不加static) 在当前类中可以直接调用 即类名可以省略,在不同类中类名不能省略
2.不同级别的方法(一个加,一个不加static)
如果不同级别的方法,非静态的方法(对象级别可以调用静态的方法即属于类级别的方法)-》静态
如果不同级别的方法,静态的方法不能直接调用,可以间接调用非静态的方法(通过创建对象 对象.方法)
在不同类中:
1.非static 对象.方法
2.static 类名.方法 (对象.方法)不推荐
业务场景:
侧重业务处理不侧重归属对象一般添加为static 例如:Arrays.toString() 工具类(共通类
大部分业务侧重对象级别
public class Dog {
private int id;// 对象级别 实例变量
private String name;// 对象级别 实例变量
private static int foodCount;// 类级别 类变量
public static void main(String[] args) {
Dog dog = new Dog();
dog.id = 101;
dog.name = "旺财";
dog.foodCount = 5;
Dog dog2 = new Dog();
dog2.id = 102;
dog2.name = "糖豆";
dog2.foodCount = 6;
System.out.println(dog.name);
System.out.println(dog2.name);
System.out.println(dog.foodCount);// 不推荐
System.out.println(Dog.foodCount);// 标准方式 类名.属性 (static级别
Dog dog3 = new Dog();
dog3.eat();
}
/*
* 对象级别的方法(非静态方法
*
* */
public void eat(){
System.out.println("狗吃狗粮");
//changeFood();
}
public static void changeFood(){
System.out.println("更改食物数量");
Dog dog = new Dog();
dog.eat();
}
}