java面向对象及值传递和引用传递

java面向对象

java的核心是面向对象(oop)

属性+方法=类

java:

  • 面向过程:(线性)步骤简单,第一步做XX,第二步XX...适合处理一些较为简单的问题。
  • 面向对象:分类的思维:先思考解决问题需要哪些类-->对这些类进行单独思考-->对某个分类下的细节进行面向过程的分析,适合处理复杂与多人协作的问题。

对于描述复杂事物,为了从宏观上把握,从整体上合理分析,需要使用面向对象思路来分析整个系统。但是,具体到微观操作,仍需要面向过程的思路去处理。

面向对象编程的本质:以类的方式组织代码,以对象的组织封装数据

抽象的思想

三大特性:

  • 封装
  • 继承
  • 多态

从认识论角度:先有对象后有类,对象是具体事物。类是抽象的,是对对象的抽象。

从代码运行角度:先有类再有对象,类是对象的模板。

java方法调用

  • 静态方法:含static修饰的方法,通过类名.方法名调用

  • 非静态方法:通过实例化这个类来调用

package com.yuanyu.study;

public class Oop {
    public static void main(String[] args) {
        Oop.say(); //静态方法直接 类名.方法名调用
        Oop oop=new Oop(); //非静态方法先将类实例化再调用
        oop.listen();
    }

    public static void say(){ //静态方法(static)
        System.out.println("hello");
    }

    public void listen(){ //非静态方法
        System.out.println("I can listen.");
    }
}

hello
I can listen.

静态方法与静态方法可以直接相互调用

非静态方法和非静态方法可以直接相互调用

而静态方法与非静态方法不能直接相互调用

image

image

java值传递与引用传递

java是值传递

值传递:

package com.yuanyu.study;

public class Oop {
    public static void main(String[] args) {
        int a=1;
        System.out.println(a); //1
        Oop.change(a);
        System.out.println(a); //1
        /*Oop oop=new Oop();
        oop.change(a);
        System.out.println(a); //1
        */
    }
    //返回值为空
    public static void change(int a){
        a=10;
    }
    /*public  void change(int a){
        a=10;
    }
    */
}

引用传递:传递的是对象,本质还是值传递

package com.yuanyu.study;

public class Oop {
    public static void main(String[] args) {
        Student student=new Student(); //实例化Student类
        System.out.println(student.name); //null
        Oop.change(student);
        System.out.println(student.name); //Sue
    }

    public static void change(Student student){
        //student是一个类
        student.name="Sue";
    }
}

//定义了一个Student类,有一个属性:name
class Student{
    String name;
}
posted @ 2022-01-04 17:48  原语  阅读(159)  评论(0)    收藏  举报