Java 类的封装、继承和多态

一. 类的封装

1.封装的概念

面向对象语言的封装包含两个含义:

  1. 类是数据以及对数据操作的封装体
  2. 信息隐蔽,即尽可能隐蔽对象的内部细节

封装的原则:要求使对象以外的部分不能随意存取对象的内部数据(属性),使软件错误能够局部化。

2.封装的步骤

  1. 修改属性的访问修饰符来限制对属性的访问。要限制类的外部对类成员的访问,可以使用访问修饰符private来修饰属性。
  2. 为每个私有属性创建一对赋值方法set()和取值方法get(),用于对属性的访问。

二.访问权限

Java中有4种访问控制:public、protected、private及默认访问控制级(default)。

类成员可以有Java提供的4种访问控制级别中的任意一种。

类成员访问级别

访问级别其他包中的类同一个包中的类不同包的子类同一个类
public
protected
default
private
  1. public访问控制修饰符用来使一个类成员公开化,属于任何包的任何类都可以访问类的公有成员,而与其来源无关。一般只有确定外部对象对成员的访问不会危及此对象的完整性时,才会将成员用public声明。
  2. protected访问控制修饰符也用来使一个类成员公开化,但是该类成员的公开化程度不及public修饰的成员,它仅可以被这个类本身、其子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
  3. private访问控制修饰符则是使一个类成员私有化,被限定为private的成员只能被这个类本身访问。
  4. 类中不加任何访问修饰权限限定的成员属于缺省的访问状态,具有默认访问级别,可以被这个类本身和同一个包中的类所访问。

方法私有:只给自己调用
方法公开:声明公开 实现隐藏,实现的改变对架构的影响最小

三、继承

继承是面向对象编程的一项非常重要的特征。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

在面向对象编程中,这种通过创建一个新类而对一个类进行拓展的过程称为继承。

子类继承父类的属性和方法,同时也可以修改父类的属性或重载父类的方法,以及在父类的基础上添加新的属性和方法。但是构造方法不能继承。

定义父类:
父类可以是系统类,也可以是自定义类。
在父类中只定义一些通用的属性与方法。

定义子类:
[类修饰符] class 子类名 extends 父类名{}

访问控制修饰符
  • private 私有 不能继承
  • default 本类 + 同包 同包子类可以继承
  • protected 本类+同包+不同包的子类 可以继承
  • public 公开 可以继承

单继承:一个子类只能有一个直接父类,类之间会形成简单的树状结构。

super关键字

super用来引用继承自父类的成员,用法

  1. 调用父类的构造方法时,默认调用无参的方法,想要指定调用,就要用super。super常常用来把构造参数传给父类,去设置父类属性。
    super必须是构造方法的第一个语句。如果一个构造方法的第一句话,不是this(…),也不是super(…),系统会默认添加super();
  2. 操作被隐藏的成员变量和被覆盖的成员方法

对象的构造过程:

  1. 分配空间 本类+父类,一并分配
  2. 递归的构造父类对象(2-4步)
  3. 初始化本类属性
  4. 调用本类构造方法

如A<------B

1.分配空间
2.初始化A属性
3.调用A构造方法
4.初始化B属性
5.调用B构造方法

class Super{
	protected int a = 10;
}
class Sub extends Super{
	int a = 20;
	public void print(){
		int a = 30;
		System.out.println(a);		//30
		System.out.println(this.a);		//20;
		System.out.println(super.a);	//10
	}
}

四、多态

多态指的是拥有相同的形式,但根据不同的情形拥有不同的机能的特点。

  1. 对象类型不变
  2. 只能对引用调用其引用类型中声明的方法
  3. 运行时,根据对象实际类型找子类覆盖之后的方法

子类的对象可以看做是父类的对象,子类的对象可以放入父类引用。
子类引用赋值给父类引用,可以直接赋值。
父类引用赋值给子类引用,必须强制类型转换,保证编译通过运行时可能发生类型转换异常。
多态的作用:将不同的子类对象统一看做父类对象,屏蔽了不同子类的差异。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值