关于面向对象和封装的个人理解
类和对象
类:对事物的一种描述(具有共同属性和行为的事物的抽象),例如手机,属性:品牌价格,行为:玩游戏,刷vx;
对象:客观存在(在java中体现就是mian方法里面用类定义一个对象,然后用对象去调用方法或者调用成员变量)
二者关系:类为属性行为抽象,对象则为实体。
对象内存图理解:堆内存开辟空间,成员变量出现 并产生默认初始化值,将对象地址值记录以便于通过对象名调用成员变量。
成员变量和局部变量的区别:类中位置不同,内存中位置不同,生命周期不同,初始化值不同(成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)。
封装
private关键字:被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作(get,set方法)
this关键字:this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)。
封装理解: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问(private修饰和get,set方法)
封装的好处以及作用: 把代码用方法进行封装,提高了代码的复用性, 通过方法来控制成员变量的操作,提高了代码的安全性。
难题汇总
银行账户
package test3;
public class bank {
public static void main(String[] args) {
//在测试类Bank中创建银行账户类对象和用户类对象,
// 并设置信息,与显示信息
Customer customer = new Customer("李华","123456789","987456321","新华小区");
Account account = new Account(1111115646,1000000,customer);
customer.say();
account.withdraw( 10000 );
account.save( 9999999 );
System.out.println(customer.say());
System.out.println(account.getinfo());
if (account.withdraw( 10000 )==true){
System.out.println("取钱成功");
System.out.println("余额还有"+account.getBalance());
}else{
System.out.println("取款失败");
}
if (account.save( 444444 )==true){
System.out.println("存款成功");
System.out.println("余额还有"+account.getBalance());
}else{
System.out.println("存款失败");
}
}
}
package test3;
/*2.定义银行账户类Account,有属性:卡号cid,余额balance,所属用户Customer
银行账户类Account有方法:(1)getInfo(),返回String类型,返回卡的详细信息
(2)取钱方法withdraw(),参数自行设计,如果取钱成功返回true,失败返回false
(3)存钱方法save(),参数自行设计,如果存钱成功返回true,失败返回false
其中Customer类有姓名、身份证号、联系电话、家庭地址等属性 Customer类有方法say(),
返回String类型,返回他的个人信息。在测试类Bank中创建银行账户类对象和用户类对象,
并设置信息,与显示信息*/
public class Account {
private int cid ;
private int balance;
private Customer customer;
public Account(Customer customer) {
this.customer = customer;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public in