2021-04-19面向对象 方法调用 值传递

面向对象

面向过程思想:

  1. 步骤清晰简单
  2. 面向过程适合处理一些较为简单的问题

面向对象思想:

  1. 物以类聚,分类的思维模式,思考问题首先会决绝哪些问题需要哪些分类,然后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索
  2. 面向对象适合处理复杂的问题,适合处理需要多人协作的问题

面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据
三大特性:封装 继承 多态

方法调用

public class Demo2 {
    //静态方法 static
    public static void main(String[] args){
        //静态方法的调用
        Demo2.say();
        //非静态方法的调用 需要通过new关键字实例化
        new Demo2().come();
        
    }
    
    //静态方法
    public static void say(){
        System.out.println("学生说话了");
    }
    //非静态方法
    public void come(){
        System.out.println("学生来了");
    }
    
    //两个非静态方法之间调用
    public void a(){
        b();//直接调用
    }
    public void b(){
        
    }
    
    //两个静态方法之间调用
    public static void c(){
        d();//可以直接调用
    }
    public static void d(){
        //a();
        //直接调用会报错,非静态类实例化之后才存在
    }
}

值传递

public class Demo4 {
    public static void main(String[]args){
        int a = 1;
        System.out.println(a);
        Demo4.change(a);
        System.out.println(a);//1 值传递
    }

    //返回值为空
    public static void change(int a){
        a = 10;
    }
}

引用传递

对象,本质上还是值传递

//引用传递:对象,本质还是值传递
public class Demo5 {
    public static void main(String[] args){
        Person person = new Person();
        System.out.println(person.name);//null

        Demo5.change(person);
        System.out.println(person.name);//。。
    }
    public static void change(Person person){//将person传递给change方法
        //person是一个对象,指向的是 Person person = new Person() 这是一个具体的人,可以改变
        person.name = "。。";
    }

}
//定义一个Person类,有一个属性:name
class Person{
    String name;
}