一、类的定义
用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(); } }
运行结果: