面向对象及方法的调用
面向对象面向对象编程的本质是:以类的方式组织代码,以对象的组织封装数据
三大特性:封装
继承
多肽从认识角度考虑是先有对象后有类,从代码
面向对象及方法的调用
面向对象
- 面向对象编程的本质是:以类的方式组织代码,以对象的组织封装数据
- 三大特性:
- 封装
- 继承
- 多肽
- 从认识角度考虑是先有对象后有类,从代码的角度考虑是先有类后有对象,类是对象的模板
方法的调用
-
同一个包中的类可以直接使用,直接用类名点调用其中的方法
-
调用本类中的静态方法可以直接用方法名就可以
例如:
public static void main(String[] args){ a(); } public static void a(){ System.out.println("我是一个静态方法"); }
-
调用同一个包中的另一个类中的静态方法,需要用类名点方法名进行调用
public static void main(String[] args){ xuexi.b(); }
-
调用同一个包中的另一个类中的非静态方法,需要new一个该类的对象,用对象调用他的方法
例如:
public static void main(String[] args){ //对象类型 对象名 = 对象值 xuexi xuexi = new xuexi();//new了xuexi类的对象 xuexi.b();//对象调用方法 }
-
调用本类中的非静态方法,也需要new一个本类的对象,用对象进行调用
例如:
public class lianxi1 { public static void main(String[] args){ //对象类型 对象名=对象值 lianxi1 name = new lianxi1(); name.a(); } public void a(){ System.out.println("我是一个静态方法"); } }
-
注意:
静态方法是不能调用非静态方法的,因为静态方法是和类一起加载的,而非静态方法创建对象后才存在,所以他们有时间差,静态方法出现的时候非静态方法还没有出现呐
除了这种情况,其他情况的方法调用方法都是可以的
例如:
public static void i(){ a();//掉不出来a方法,因为a是非静态方法 }
值传递
举例说明:
public static void main(String[] args){
int a=1;
xx(a);//a执行力此方法后a的值还为1,a只是给这个方法进行了传值,并没有将a本身传给方法,这就是值传递
System.out.println(a);
}
public static void xx(int a){
a=10;
}
引用传递
举类说明:
public class Demo05 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//输出为空
Demo05.change(person);
System.out.println(person.name);//输出对象,这就是引用传递
}
public static void change(Person person){
person.name="对象";
}
static class Person{
String name;
}
}