java 三大特性_java的三大特性是什么?

java 三大特性_java的三大特性是什么?java的三大特性Java语言的三大特性即是:封装、继承、多态首先先简单的说一下其3大特性的定义:封装:在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。将抽象得到的…

大家好,又见面了,我是你们的朋友全栈君。

09b86cadf3679547967e493048fd8836.png

java的三大特性

Java语言的三大特性即是:封装、继承、多态

首先先简单的说一下其3大特性的定义:

封装:

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。封装的基本要求是: 把所有的属性私有化,对每个属性提供getter和setter方法,如果有一个带参的构造函数的话,那一定要写一个不带参的构造函数。在开发的时候经常要对已经编写的类进行测试,所以在有的时候还有重写toString方法,但这不是必须的。

继承:

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

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

通过继承实现代码复用。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));

}

}

//主程序

这样,只需要输入运算符号,通过多态,返回父类的方式实现了计算器的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157129.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • react路由原理解析[通俗易懂]

    react路由原理解析[通俗易懂]原理:在dom渲染完成之后,给window添加  “hashchange”事件监听页面hash的变化,并且在state属性之中添加了route属性,代表当前页面的路由。 1、当点击连接 页面hash改变时,触发绑定在window上的  hashchange事件, 2、在hashchange事件中改变组件的state中的route属性,(react组件的state属性改变时

    2022年5月24日
    47
  • idea安装mybatis插件_myeclipse安装插件

    idea安装mybatis插件_myeclipse安装插件选择Help->Installfromsite…在弹出的对话框中点击右上角的Add按钮Name:mybatisLocation:https://dl.bintray.com/mybatis/mybatis-generator

    2022年9月27日
    4
  • IIS7.5配置防盗链

    IIS7.5配置防盗链首先,要下载、安装一个IIS重写模块。是到微软站点下载的,可以放心了。(靠,之前以为IIS7是内置了的,想不到还是要另外安装东西)64位:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=1b8c7bd8-8824-4408-b8fc-49dc7f951a0032位:http://www.microsoft.com/…

    2022年7月23日
    12
  • java 基础 代码 详解_java新手入门-java新手代码大全

    java 基础 代码 详解_java新手入门-java新手代码大全​java中有很多的知识非常的繁琐,经常需要我们花费大量的时间和精力去学习和理解。关于synchronized锁和ReentrantLock锁的知识点有很多,你都掌握了吗?一起来了解一下吧。对于synchronized意思相信大家都应该很清楚了,但是同时有很多小白表示对于synchronized是不是悲观锁以及它的使用场景不是很清楚,那么就一起通之前给大家介绍了synchronized和lo…

    2022年7月8日
    40
  • 熟练使用STL标准库是每个C++程序员的必备技能!_舞蹈基础教学视频

    熟练使用STL标准库是每个C++程序员的必备技能!_舞蹈基础教学视频STL最全教程,适合新老手呀

    2022年10月15日
    6
  • 原创教程PS修图技巧-如何用portraiture滤镜来进行人像磨皮

    原创教程PS修图技巧-如何用portraiture滤镜来进行人像磨皮原创教程PS修图技巧-如何用portraiture滤镜来进行人像磨皮我们平常拍照,都要用到PS修图,今天教大家如何修图磨皮,非常有价值有营养的教程,完全是自己写的,修图有时候并不是只是设计师的事,对于我们这些小白来说,也是想修好自己所拍的图片,然后这个图片能够获得朋友圈的赞赏,这个时候大家可以运用磨皮插件这个方法来进行人像修图,那接下来就来教教大家应该如何操作如何用portraiture来进行人像磨皮工具/原料电脑PhotoshopCC方法/步骤首先打开我们的软件,然后单击“文件

    2022年7月22日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号