java封装 继承 多态_Java 封装、继承、多态

Java 封装、继承、多态

1.封装:

封装的理解:

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。(简单的说就是隐藏对象的信息,留出访问的接口)。

特点:1.只能通过规定的方法访问数据;2.隐藏类的实例细节,方便修改和实现。

实现封装的方式:使用访问控制符:

java提供了三种访问权限,准确的说还有一种是默认的访问权限,加上它一共四种。

private   在当前类中可访问

default        在当前包内和访问

protected    在当前类和它派生的类中可访问

public          公众的访问权限,谁都能访问

现在代码实现下封装:

bfb3fc9643ca4a300140d7438c8ae31f.png

现在有两个类 学生类里有几个共有的字段 name age sex 现在用另一个Teacher类是可以访问它的属性的并非没有报错。

32918e22ae7473e35d3561d50c56a9ca.png

现在把字段的访问控制符 都改成了private Teacher类就访问不到了 这样就完成了属性的封装 那怎么让外界访问到Student的字段呢?

就要用get set方法了

789dc16cf2c9cc15de1214ad1c83dd64.png

现在写了set和get方法 其他类只需要用get和set方法 就可以完成值的设置和获取

运行Teacher.java结果:

ec07bba4ecbe7236135c5a3e12ad9626.png

可以看到设置并获取到了值

2.继承:

继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

类的继承格式:

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

class父类 {

}class 子类 extends父类 {

}

代码实现一下:

169ddf94194fc5b08af8338a129bbde5.png

现在这里有三个类 Student Person Teacher 其中Student 和 Teacher 都继承了Person 所以 Person是父类 Student和Teacher是子类

a0848d0a2ef38a9e483f00aa475e35dc.png

现在向Preson类写一个字段和一个方法 在子类中创建父类对象 然后可以看到子类都可以调用父类的方法和属性 这就是继承:子类从父类继承方法,使得子类具有父类相同的行为。

运行子类结果:

736d82dcacaf77a480240ec766bd6456.png

得到了父类的方法和属性

f88c794b7c9050e9452c16c4df80f8f4.png

当我们用一个对象 点 的时候下面会有很多方法 我们并没有继承为什么会有呢?

这是因为java的所有类都继承的object类这些方法其实就是object类中的方法

3.多态:

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

4029680a21999a23731efbeb5043ce0e.png

代码实现多态:

1f5f273b1d1eb2fc9a690a192cbd619b.png

现在有三个类 Person Student 和 Text  Student继承了Person

7bd160b64a9ef5259cb1710fcb01bd3b.png

现在在测试类里 分别new三个对象 可以看到 都是new的Student 但是他的引用类型可以是他的父类和Object

6771347d5fbb6a051d2e2bfaa097b205.png

分别调用student的say方法和student2的say方法

运行:

35309b4d23f4799551b28fb9d9becd61.png

可以看到都调用了父类的say方法

52bff846f10d3b5ad82f69a664b89b3c.png

现在在Student中重写父类的say方法

2bc4ff7ebb0a5a30b7540df8284d2e14.png

在测试类中再次调用student的say和student2的say方法

运行:

4502284ef2b1f3d57ac8d695ad4d11eb.png

可以看到虽然student2引用类型是Person但是并没有执行父类的say方法

这就完成了多态 虽然都是同一个父亲但是自己完成了不一样的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值