t使用构造器赋值
如果创建对象仅仅是为了调用这个类的方法,建议使用无参构造器
如果创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值
person是Persaon类的对象,是Person类的实例
Person person = new Person();
当使用对象调用属性时,调用的是成员变量
this关键字:
this代表的是当前类的对象,this代表的是当前方法的调用者
this既然是代表方法的调用者, 它实际上和对象的作用是一样的
既可以调属性,也可以调方法。
this不能用在static方法中
this通常用在赋值,构造器赋值。
一个类中可以有属性、方法,构造器。
调用构造器
不需要写任何名字
this调用构造器的要求:
1、必须在构造器中使用this调用构造器
2、必须是第一句话(第一行代码)
this(str); this.i = i;
无参构造器
public Person() {
}
有参构造器
public Person(String name,int age) {
this.name = name;
this.age = age;
}
例题
* 有一个Person类,有name,age属性 * 有一个Debit类,有cardId,password,balance(余额)属性 * * Person类有一个开户的方法,openAccount,in(余额增加),out(余额减少, * 取款时要判断余额) * Debit类中有一个显示银行卡信息的方法。1.创建对象,调用方法
public class Demo { public static void main(String[] args) { Person person = new Person("张三",25); Debit debit = new Debit("665544998877","123456",100); person.openAccount(debit); person.in(151); person.out(200); person.out(100); } }
public class Debit { String cardId; String password; double balance; public Debit(){} public Debit(String cardId, String password, double balance) { this.cardId = cardId; this.password = password; this.balance = balance; } public void show() { System.out.println("卡号:" + cardId + ",余额:" + balance); } }
public class Person { String name; int age; Debit debit; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public void openAccount(Debit debit) { this.debit = debit; // 开户成功,显示一下开户信息 debit.show(); show(); } public void in(double money) { // 存款:修改余额并且重新赋值 debit.balance += money; System.out.println("存款成功!余额为:" + debit.balance); } public void out(double money) { // 取款:修改余额并且重新赋值 if(money <= debit.balance){ debit.balance -= money; System.out.println("取款成功!余额为:" + debit.balance); }else { System.out.println("余额不足!余额为:" + debit.balance); } } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } }
面向对象的特征:封装 快捷键 alt+insert
(1)属性私有化,所有的属性都要使用private封装 (2)提供一个公有的set,get方法。 getter方法能够按照客户的期望返回格式化的数据 setter方法可以限制和检验setter方法传入的参数是否合法 隐藏对象的内部结构 定义一个类: (1)所有的属性私有化 (2)每个属性都有对应的setter、getter方法