java类和对象以及匿名对象

一、类的定义

用idea创建工程,在工程里创建对象如下:

package com.itstuday.javabean;

/**
  1.private 表示私有的,封装的意思,属于一个权限修饰
    可以修饰:成员变量 成员方法 构造方法
    修饰的内容只能在本类中使用

 2.构造方法 public 类名();无返回值 方法名称必须与类名一致
    构造方法 new对象的时候调用 给对象初始化值
 3.javabean的定义
    1)私有化所有成员变量
    2)无参构造方法
    3)提供get set 方法
 */

public class Person {
    //成员变量
    private String name;
    private String age;

    //成员方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
    //无参构造方法
    public Person() {
    }
    //满参构造方法
    public Person(String name, String age) {
        this.name = name;
        this.age = age;
    }
}

测试:

package com.itstuday.javabean;

public class test01 {
    public static void main(String[] args) {

        Person person = new Person();

        person.setAge("18");

        System.out.println("person.getAge().toString() = " + person.getAge().toString());
    }
}

运行结果:

 

二、This的用法

1.

package com.itstuday.javabean;

/**
 * this的用法:
 * 1)区别成员变量和局部变量
 * 2)记录调用方法的对象地址值
 */


public class Student {
    public void show(){
        method();
        System.out.println(" = " +this);
    }

    public void method() {
        System.out.println(""+this);
    }
}

测试:

package com.itstuday.javabean;

public class test02 {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println("s = " + s);
        s.show();

        Student s1 = new Student();
        System.out.println("s1 = " + s1);
        s1.show();
    }
}

结果:

如果将Student类中的method()方法变成静态方法 测试结果如下:

结论:无论是直接或间接的调用非静态方法,都有一个隐式变量this记录着地址值。

2.调用本类构造方法

package com.itstuday.javabean;

/**
 * this 必须放到构造方法的第一行,要不会报错。
 */
public class Teacher {
    String name;
    int age;

    public Teacher() {
        this("哈哈",18);
        System.out.println("无参构造方法 ");
    }


    public Teacher(String name, int age) {
//        this();
        this.name = name;
        this.age = age;
        System.out.println(" 满参构造方法" );
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

测试:

package com.itstuday.javabean;

public class test03 {
    public static void main(String[] args) {
        Teacher teacher1 = new Teacher();
        System.out.println("teacher1 = " + teacher1);
//        Teacher teacher = new Teacher("呵呵",30);
    }
}

运行结果:

放开满参的this方法,屏蔽无参的this方法的执行结果。

 

 总结: 1)this调用本类的构造方法要求必须位于当前构造方法

                2) this调用本类的构造方法不支持递归调用

三、匿名对象

1.

package com.itstuday.javabean;

public class student01 {
    String name;
    public void say(){
        System.out.println("name = " + name);
    }

    public void sleep(){
        System.out.println("sleep.............. ");
    }
}
测试:
package com.itstuday.javabean;

public class test04 {
    public static void main(String[] args) {
        student01 s = new student01();
        s.sleep();
        s.name = "罗宾";
        s.say();
        System.out.println("分界线==========================");
        new student01().sleep();
        new student01().name = "娜美";
        new student01().say();

        System.out.println("s = " + s);
        System.out.println("s = " + new student01());
    }
}

结果:

1)匿名对像可以直接调用方法 

2)匿名对象局限性不能用它多次调用类的成员

2.匿名对象的使用(用来传递参数)

package com.itstuday.javabean;

public class test05 {
    public static void main(String[] args) {
        showStudent(new student01());
    }

    public static void showStudent(student01 s) {
        s.name= "哈哈";
        s.sleep();
        s.say();
    }


}

运行结果:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值