Java面向对象三大特性(封装,继承,多态)

一、封装

封装:是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);
 	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值