一、封装
封装:是Java的三大特性之一,把对象的内部细节(将属性设置成私有的)封闭起来,只提供操作对象属性的公共方法调用;
目的:通过公开方法访问数据,可以从方法里加入逻辑控制,避免不合理的访问,可进行数据检查,保证数据完整性,防止不希望的交互和非法访问。便于后期修改,提高代码的可维护性;
实现:①属性私有化,隐藏对象的属性和实现细节,不允许外部直接访问(.);②提供公开的函数访问属性和类的方法。
package com.study.object;
public class Member {
//会员类的属性有:手机号,密码,注册名,余额;
private String phone;
public String password;
public String regName;
private double amount;
//赋值手机号的方法
public void setPhone(String phone) {
if(phone.length()==11) {
this.phone = phone;
}
}
//取手机号的方法
public String getPhone(){
return phone;
}
//赋值余额的方法
public void setAmount(double amount) {
this.amount = amount;
}
//取余额的方法
public double getAmount() {
return amount;
}
//会员类的方法有:注册,登录,充值,提现
//手机号为11位并且密码为6位,才能登录成功
public void login(String phone,String password) {
if(phone.length()==11&&password.length()==6) {
System.out.println("登录成功!");
} else {
System.out.println("账号或者密码错误!");
}
}
}
package com.study.object;
//调用会员类,给会员类里面的属性进行赋值
public class Tester {
public static void main(String[] agrs) {
//创建对象
Member menber = new Member();
menber.setPhone("13707790000");
System.out.println(menber.getPhone());
menber.setAmount(999.99);
System.out.println(menber.getAmount());
}
}
二、继承
继承的语法:
修饰符 class SubClass extends SuperClass
{
//类定义
}
使用继承要用关键字:extends(扩展),SubClass类继承SuperClass类里面的所有方法和属性,并且可以生成新的类,具有扩展新的能力
例如:
三、多态(重写)
多态(重写)的概念:用父类类型(Member)来接收子类(Investor)的对象,Java通过方法来实现多态。
多态(重写)的目的:通过方法重写,子类可以重新实现父类的某些方法,使其具有自己的特性
通过方法重写,相同类型的对象(变量),执行同一个方法表现出不同的行为特征,称为多态
多态的优点:提高代码的复用性,简化代码
Member类,Investor类,Borrower类里面都各自recharge方法,使用Tester4的类来调用recharge方法进行测试,测试结果为:不是调用父类(Member类)里面的recharge的方法;而是调用子类Investor、Borrower里面的各自的recharge方法;这种就叫做多态(重写)
代码的优化:Member类,Investor类,Borrower类里面recharge方法都差不多一样,这样看起来,代码就很多余
package section01;
public class Member {
//会员类的属性有:手机号,密码,注册名,余额;
private String phone;
public String password;
public String regName;
private double amount;
//赋值手机号的方法
public void setPhone(String phone) {
if(phone.length()==11) {
this.phone = phone;
}
}
//取手机号的方法
public String getPhone(){
return phone;
}
//赋值余额的方法
public void setAmount(double amount) {
this.amount = amount;
}
//取余额的方法
public double getAmount() {
return amount;
}
//会员类的方法有:注册,登录,充值,提现
//手机号为11位并且密码为6位,才能登录成功
public void login(String phone,String password) {
if(phone.length()==11&&password.length()==6) {
System.out.println("登录成功!");
} else {
System.out.println("账号或者密码错误!");
}
}
//充值的范围为100元-10000元
public boolean recharge(double amount) {
if(amount<100||amount>10000) {
//System.out.println("11.充值失败,金额必须大于等于100元,小于等于10000元");
return false;//充值失败,返回false
}else {
//System.out.println("12.充值成功");
this.amount +=amount;
return true;//充值成功,返回true
}
}
}
package section01;
//投资人
public class Investor extends Member{
public void invest(int amount) {
//投资的逻辑
}
public boolean recharge(double amount) {
/*
if(amount<100||amount>10000) {
System.out.println("21.充值失败,金额必须大于等于100元,小于等于10000元");
}else {
System.out.println("22.充值成功,你可以去投资项目了!");
this.setAmount(this.getAmount()+amount);}
*/
boolean flag = super.recharge(amount);//使用super关键字,调用父类里面的方法
if(flag) {
System.out.println("充值成功,你可以去投资了");
}else {
System.out.println("充值失败");
}
return flag;
}
}
package section01;
//借款人
public class Borrower extends Member {
private boolean hascar;
public boolean isHascar() {
return hascar;
}
public void setHascar(boolean hascar) {
this.hascar = hascar;
}
public boolean isHashouse() {
return hashouse;
}
public void setHashouse(boolean hashouse) {
this.hashouse = hashouse;
}
private boolean hashouse;
public boolean recharge(double amount) {
/*
if(amount<100||amount>10000) {
System.out.println("31.充值失败,金额必须大于等于100元,小于等于10000元");
}else {
System.out.println("33.充值成功,你可以去还款了!");
this.setAmount(this.getAmount()+amount);
}
*/
boolean flag = super.recharge(amount);//使用super关键字,调用父类里面的方法
if(flag) {
System.out.println("充值成功,你可以去还款了");
}else {
System.out.println("充值失败");
}
return flag;
}
}
package section01;
//测试Member类、Investor类、Borrower类中都有充值的类,分别调用的是哪个
public class Tester01 {
public static void main(String[] args) {
/**
* 多态(重写)的概念:用父类类型(Member)来接收子类(Investor)的对象,Java通过方法来实现多态。
* 多态(重写)的目的:通过方法重写,子类可以重新实现父类的某些方法,使其具有自己的特性
* 通过方法重写,相同类型的对象(变量),执行同一个方法表现出不同的行为特征,称为多态
* 多态的优点:提高代码的复用性,简化代码
*/
Member aa = new Investor();
aa.recharge(8888);
System.out.println("----------");
Member bb = new Borrower();
bb.recharge(9999);
}
}