java封装的特性,java的三大特性(封装、继承、多态)
Java语言的三大特性即是:封装、继承、多态
首先先简单的说一下其3大特性的定义:
封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。封装的基本要求是:
把所有的属性私有化,对每个属性提供getter和setter方法,如果有一个带参的构造函数的话,那一定要写一个不带参的构造函数。在开发的时候经常要对已经编写的类进行测试,所以在有的时候还有重写toString方法,但这不是必须的。
继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。在开发中尽量减少继承关系,这样做是为了把程序的耦合度降低。
多态:多态又分为设计时多态和运行时多态,例如重载又被称为设计时多态,而对于覆盖或继承的方法,JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。总而言之,面向对象的设计的典型特点就是继承,封装和多态,这些特点也是面向对象之所以能如此盛行的关键所在。
以上就是java三大特性的基本含义,大家理解一下就行了,千万别背啊!接下来我们通过一个例子来完美的解释一下java的3大特性。
用java做一个简单计算器;
import java.io.*;
class
OperationAttridute
{
private
double numberA=0;
private
double numberB=0;
private
double result=0;
public
double setNumberA(double i)
{
return
numberA=i;
}
public
double getNumberA()
{
return
numberA;
}
public
double setNumberB(double j)
{
return
numberB=j;
}
public
double getNumberB()
{
return
numberB;
}
public
double setResult(double z)
{
return
result=z;
}
public
double getResult(double a,double b)
{
return
result;
}
}
//将要运算的2个数字和运算结果进行封装。
class OperationA extends
OperationAttridute
{
public
double getResult(double a,double b)
{
double
result=0;
result=a+b;
return
result;
}
}
//加法类:继承OperationAttridute类并且覆盖其getResult方法
class OperationS extends
OperationAttridute
{
public
double getResult(double a,double b)
{
double
result=0;
result=a-b;
return
result;
}
}
//减法类:继承OperationAttridute类并且覆盖其getResult方法
class OperationM extends
OperationAttridute
{
public
double getResult(double a,double b)
{
double
result=0;
result=a*b;
return
result;
}
}
//乘法类:继承OperationAttridute类并且覆盖其getResult方法
class OperationD extends
OperationAttridute
{
public
double getResult(double a,double b)
{
double
result=0;
if(b==0)
{
Throw
new RuntimeException(“被除数不能为0”);
}
result=a/b;
return
result;
}
}
//除法类:继承OperationAttridute类并且覆盖其getResult方法,除法要对被除数进行判断并抛出异常
class Operationdo
{
public
static Object expression_r(char r)
{
OperationAttridute
oa=new
OperationAttridute();
switch(r)
{
case
'+':
oa=new
OperationA();
break;
case
'-':
oa=new
OperationS();
break;
case
'*':
oa=new
OperationM();
break;
case
'/':
oa=new
OperationD();
break;
}
return
oa;
}
}
//运算类:通过传进来的参数,来调用运算方法
class Account
{
public
static void main(String []args)throws Exception
{
char
r='*';
OperationAttridute
oa=(OperationAttridute)Operationdo.expression_r(r);
double
a=oa.setNumberA(9);
double
b=oa.setNumberB(2);
System.out.println(oa.getResult(a,b));
}
}
//主程序
这样,只需要输入运算符号,通过多态,返回父类的方式实现了计算器的结果。
通过以上的例子,我相信大家应该对java的特性有一个清醒的认识了。编程是一门艺术,只有深刻理解其思想才能创造出与众不同的代码,我一向认为,编码能力是可以练出来的,但是编程思想是需要不断的学习不断的总结,这样才能有质的飞跃!
大家共勉吧!
java封装的特性,java的三大特性(封装、继承、多态)相关推荐
- java 三大特性理解_java 三大特性--封装、继承和多态理解
java 三大特性--封装.继承和多态理解 封装 /** * 所谓封装,就是将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用, * 被封装的成员只能通过某些特定的方式才能访问. * 实 ...
- java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法
面向对象的三大特征:继承.封装.多态 继承的实现 继承让我们更加容易实现类的扩展.子类是父类的扩展 使用extends实现继承 package cn.sxt;public class Test {pu ...
- 【Java】保证并发安全的三大特性
一.并发编程三大特性的定义和由来 并发编程这三大特性就是为了在多个线程交替执行任务的过程中保证线程安全性. 二.为什么会出现线程不安全的现象呢? 接下来我们从这三个特性切入来介绍线程不安全的原因. 1 ...
- java基础之堆、栈、方法区 继承 多态
|--数组实例化过程 ----------------------------------------------------------------------------------------- ...
- java的封装性的优点_18、Java的三大特性之封装
Java的三大特性 java是一个面向对象的语言,所以java也有面向对象语言的三大特性:继承,封装,多态,任何一个java项目,都会用到这三种特性,所以掌握好这三大特性非常的重要. 封装 我们为什么 ...
- Java基础核心之三大特性
三大特性 一.三大特性 面向对象三大特性:封装.继承.多态. 封装: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 继承: 子类拥有父类的所 ...
- 面向对象的三大特性:封装、继承、多态
面向对象的三大特性 面向对象的三大特性:封装.继承.多态 封装 封装,成员变量的封装,保证了数据的安全性.封装的好处:过滤了不合理的值.屏蔽内部的赋值过程.让外界不必关注内部的细节 Set方法 1. ...
- php面向对象三大特性,PHP面向对象的三大特性之一封装性
/*封装性: 面向对象的三大特性之一 *就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节 *public protected *private 私有的, 用这个关键字 ...
- C#面向对象三大特性(重要)
转载该博主很多文章都比较不错 想要学好面向对象编程,除了掌握语法结构外最重要的就是熟悉面向对象三大特性,这三大特性不是相互独立的而是相互关联.你中有我我中有你的关系,想要真正了解三大特性必须把这三部分 ...
- python基础学习笔记13:面向对象的三大特性
1.面向对象有哪些特性 面向对象的三大特性:封装性.继承性.多态性 2.Python中的封装 在Python代码中,封装有两层含义: 把现实世界中的主体中的属性和方法书写到类的里面的操作即为封装 cl ...
最新文章
- Manifest merger failed Suggestion: add 'tools:replace=“Android:value”' to meta-data element at And
- 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt
- PHP SPL使用方法和他的威力
- JDBC Druid式link
- NET问答: ThreadStatic 和 ThreadLocalT 哪一个更好 ?
- new 结构体指针_Go:我应该用指针替代结构体的副本吗?
- 省市区 / 三级联动
- c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
- Java SE 疑难点记录
- 浅谈Hybrid技术的设计与实现第二弹
- 可运行的C语言程序的拓展名,可运行的c语言程序的扩展名为什么?
- JavaSE环境搭建
- Android 监听 摇杆,Android虚拟摇杆 摇杆 方向控制
- EasyPoi 模板导出Excel (带图片) 以及一些踩坑记录
- oracle静默安装报错,静默安装oracle时报错
- 指数型基金今年来收益排行榜
- 浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情
- 2018北大数学夏令营游记
- 关于Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp错误
- web表格控件FineReport作为企业web表格制作软件的核心优势
热门文章
- 手机画面尺寸多少满屏_手机屏幕科普
- python的库在哪_你知道python常见的库有哪些吗?五大python库
- ip pim spare 源树 和 共享树_Pim通用规则+Dense模式规则+Sparse模式规则
- python语言跨平台语言吗_python属于跨平台语言吗?
- python 第一个单词大写其他小写_Python入门的新手需要遵守哪些命名规范?
- solr 4.8 mysql_solr 4.8+mysql數據庫數據導入 + mmseg4j中文全文索引 配置筆記
- java svgbase64转byte_java 图片进行base64 编码解码
- 电子自动窗帘系统c语言程序,单片机自动窗帘控制程序(两个电机)
- Spring事务原理,Java开发岗还不会这些问题
- 字节跳动技术整理:mysql查询重复数据sql