封装、继承、多态

封装

封装,就是隐藏实现细节

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

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

封装的实现

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

为每一个属性创建一对赋值(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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页