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);
    }
哈
嘿
嘿