封装、继承、多态

封装

封装,就是隐藏实现细节

将属性私有化,提供公有方法访问私有属性

通过这些公有方法访问私有属性

封装的实现

修改属性的可见性来限制对属性的访问

为每一个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问

在setter和getter方法中,加入对属性的存取限制

使用封装,增强了数据访问限制,增强了程序的可维护性

继承

如何实现继承

在java语言中,使用【 extends 】关键字来表示一个类继承了另一个类

子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法

子类的构造方法中,通过【 super 】关键字调用父类的构造方法

在java中,所有的Java类都直接或间接地继承了java.lang.Object类

public class Student extends Teacher{
       //省略属性、方法
}

继承代码实现示例

package com.yg.www;
//父类
public abstract class BankAccount {

	private String deposit;
	private String withdrawal;

	public BankAccount(String deposit, String withdrawal) {
		super();
		this.deposit = deposit;
		this.withdrawal = withdrawal;
	}

	public abstract String getDeposit();

	public abstract void setDeposit(String deposit);

	public String getWithdrawal() {
		return withdrawal;
	}

	public void setWithdrawal(String withdrawal) {
		System.out.println("当前取款预约人数较多,请移步至ATM机处取款。谢谢!");
		this.withdrawal = withdrawal;
	}

}

//子类1

package com.yg.www;

public abstract class Money extends BankAccount {

	public Money(String deposit, String withdrawal) {
		super(deposit, withdrawal);
		
	}

	@Override
	public abstract String getDeposit();

	@Override
	public String getWithdrawal() {
		System.out.println("您的取款操作较频繁,请5分钟后继续此操作!");
		return null;
	}
}

//子类2
package com.yg.www;

public abstract class CreditCard  extends BankAccount{

	public CreditCard(String deposit, String withdrawal) {
		super(deposit, withdrawal);
		// TODO Auto-generated constructor stub
	}

	@Override
	public  abstract String getDeposit();
	
	@Override
	public String getWithdrawal() {
		// TODO Auto-generated method stub
		System.out.println("您的信用卡额度已透支,无法完成当前交易!");
		return super.getWithdrawal();
	}
}

//测试类
package com.yg.www;

public class BankAccountTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BankAccount b=new BankAccount("取款","存款");
		b.setDeposit(" ");
		b.getWithdrawal();
		
	}

}


多态

简单来说,多态是具有表现多种形态的能力的特征

同一个实现接口,使用不同的实例而执行不同操作

如何实现多态

子类重写父类的方法

编写方法时,使用父类定义的方法

运行时,根据实际创建的对象类型动态决定使用哪个方法

包允许将类组合成较小的单元(类似文件夹),使其易于找到和使用相应的类文件

有助于避免命名冲突。在使用许多类时,类和方法的名称很难决定。有时需要使用其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突

包允许在更广的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类

访问修饰符



信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因

信息隐藏的原因包括:

对任何实现细节所作的更改不会影响使用该类的代码

防止用户意外删除数据

此类易于使用




访问修饰符可访问性



方法修饰符

static修饰符修饰的方法叫静态方法

目的:使该方法对立于类的实例,使用类去访问,而不是类实例,所以也叫类方法



调用静态方法的语法

classname.methodname();


final修饰符



abstract修饰符


抽象类可以具有指向子类对象的对象引用


总结

封装、继承和多态是面向对象的主要特征

继承可以提高代码的重用性,使用extends关键字来实现。除了构造方法之外,父类的所有方法和属性都被子类的对象继承

多态性是不同的实例对象以不同的方式对相同的信息作出不同的表现

访问修饰符用于确定访问成员的方式

Java常用修饰符有static、final、abstract

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装继承多态是面向对象编程中的三个重要概念。 封装是指将数据和对数据的操作封装在一个类中,通过访问修饰符来控制对数据的访问权限。这样可以隐藏内部实现细节,提高代码的安全性和可维护性。\[2\] 继承是指一个类可以继承另一个类的属性和方法。通过继承,子类可以重用父类的代码,并且可以在子类中添加新的属性和方法。这样可以提高代码的复用性和可扩展性。\[2\] 多态是指同一个方法在不同的对象上可以有不同的行为。通过多态,可以实现方法的重写和重载,使得程序可以根据对象的实际类型来调用相应的方法。这样可以提高代码的灵活性和可扩展性。\[1\] 总结起来,封装继承多态是面向对象编程的三个基本特性,它们可以使代码更加模块化、可维护和可扩展。 #### 引用[.reference_title] - *1* *2* [封装继承多态](https://blog.csdn.net/yahid/article/details/125665027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++ 类的封装继承多态](https://blog.csdn.net/secondtonone1/article/details/124485035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值