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.
静态方法与静态方法可以直接相互调用
非静态方法和非静态方法可以直接相互调用
而静态方法与非静态方法不能直接相互调用


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;
}
浙公网安备 33010602011771号