一、类的定义
用idea创建工程,在工程里创建对象如下:
package com.itstuday.javabean;
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;
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;
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();
}
}
运行结果:



