java面向对象(二)
构造方法
? 创建对象
? 特点:
? 构造方法名字与类名相同.
? 没有返回值,且不需要void修饰.
? 每个类中默认会有一个无参的构造方法
? 也可以定义有参数的构造方法, 一旦定义了有参的构造方法,默认无参的就会失效
? 一个类中可以有多个构造方法,通过方法的参数区分.
/**
* 类中默认有一个元素的构造方法
*/
public People(){
System.out.println("调用构造方法");
}
/**
* 还可以在类中定义有参数的构造方法,一旦定义,默认元素的就会失效
*/
public People(String n){
name=n;
System.out.println("有参数的构造方法创建一个People对象");
}
public People(String n, int a){
name=n;
age=a;
}
People w = new People();//无参的
w.Play();
People z=new People("田");//一个参数
System.out.println(z.name);
People wing = new People("赵",21);//两个参数
System.out.println(wing.name+wing.age);
方法的重载(overload)
在同一个类中出现多个方法名相同的现象--方法的重载
方法名相同时,如何区分方法:
? 1.参数的个数
? 2.参数的类型
? 3.参数的顺序
对象与引用
值传递
public class Reserve {
/*值传递*/
public static void main(String[] args) {
int a = 10;
Reserve r1 = new Reserve();
r1.test(a);//基本类型数据 是直接将值传递给其他的变量
System.out.println(a);
}
public void test(int t){
System.out.println(t);
t=5;
System.out.println(t);
}
}
运行结果:
10
5
10
引用调用
/*引用调用*/
public static void main(String[] args) {
Dog dog = new Dog();
dog.name="哈";
r2.test1(dog); //引用类型 传递的是对象的地址 并不是对象本身
System.out.println(dog.name);
}
public void test1(Dog dog1){
System.out.println(dog1.name);
dog1.name="嘿";
System.out.println(dog1.name);
}
哈
嘿
嘿