一、封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private实现封装。
封装的作用如下:
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
看一个例子:
public class Man{
//对属性封装,姓名,年龄,妻子都是私有的
private String name;
Private int age;
private Woman wife;
//对外界提供方法的封装,可以设定和获取男人的年龄和姓名,但是男人不想妻子被外界
//打扰,所以不可以获得他的妻子,
public void setWife(Woman wife) {
this.wife = wife;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
二、继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
为什么要继承呢:1、反映现实的真实关系
2、减少代码冗余
3、对父类的属性和方法进行扩展和重写
继承中,子类不可以选择性的继承父类的东西,而是全部继承父类的属性和方法。其中父类又叫超类或基类,子类又叫派生类。父类是子类的一般化,子类是父类的特化(具体化)。java中不支持多继承,一个类最多只能有一个父类。而在java中多继承是通过接口实现的。
例子:
//创建一个2D图形类
public class shape2D{
//2D图形有大小的属性
public int size;
//2D图形有计算周长和面积的方法
public void Length(){
System.out.println("可以计算周长");
}
public void Area(){
System.out.println("可以计算面积");
}
}
//创建一个圆类,继承2D图形类
public class circle extends shape2D{
//特有的半径属性
public float R;
//获得半径的方法
public void GetR(float r){
R=r;
}
}
在这个小程序中,圆类不仅有自己特有的属性和方法,也继承了shap2D类的属性和方法,这样写就减少了代码的冗余。
三、多态是由于继承和重写机制,相同类型的对象,执行相同的方法,得到的结果可能不一样。
例如:我再给以上例子的圆类中加一些代码:
public class circle extends shape2D{
//特有的半径属性
public float R;
//获得半径的方法
public void GetR(float r){
R=r;
}
//重写周长和面积的方法
public void Length(){
float a = (float) ((float)2*3.14*R);;
System.out.println("周长是"+a);
}
public void Area(){
float b = (float)3.14*R*R;
System.out.println("面积是"+b);
}
}
再写一个测试代码:
public static void main(String[] args) {
circle cir = new circle();
cir.GetR(3);
cir.Area();
cir.Length();
}
测试结果并不是shape2D中的方法执行的结果,由于方法相同,但是继承之后子类重写了方法,方法体不同,导致了最后结果不一样,这就是多态。
分享到:
相关推荐
封装继承多态总结
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
java基础_继承封装 多态,概念的梳理,对初学者很有帮助,看一遍就清楚了
java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...
Java封装继承多态实例以及文件流操作,自己整理的东西,用了单态模式实现了多态,并且贯彻了OOP思想,用到了文件流的写入与读取,希望对大家有帮助
java封装 继承与多态 程序设计 类与对象
JAVA面向对象基础测试题-继承-封装-多态等测试题.docx
前端模块化脚手架,可实现类似java的封装继承多态特性
JAVA封装继承与多态PPT教案学习.pptx
JAVA 封装、继承、多态 三大特性以及实操
NULL 博文链接:https://lingf.iteye.com/blog/1450831
jave面向对象特性继承、封装、多态的实验报告,jave重要实验。
Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门教程 java类和对象方法以及包的使用(共56页)....
JAVA自测自己编写,充分了解封装继承多态,适用于初学JAVA编程
java总结,基础语法,面向对象,封装继承多态,异常
主要介绍了java封装继承多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java封装、继承、多态.pdf
JAVA封装、继承与多态.ppt
主要介绍了Java面向对象编程(封装/继承/多态)实例解析的相关内容,具有一定参考价值,需要的朋友可以了解下。