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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中的四舍五入——几种四舍五入的写法

    java中的四舍五入——几种四舍五入的写法//方式一:BigDecimal方式doublef=3.1315;BigDecimalb=newBigDecimal(newDouble(f).toString);doublef1=b.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();注意:这里一定不要直接使用newBigDecimal(double)

    2022年7月9日
    20
  • Kali-linux :arping命令

    Kali-linux :arping命令ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。arping,用来向局域网内的其它主机发送ARP请求的指令,它可以用来测试局域网内的某个IP是否已被使用。root@pgg:/home/pgg#arping–helpARPing2.21,byThomasHabetsthomas@habets.seusage:

    2022年5月7日
    45
  • web前端开发面试中常见的算法题(JS)

    web前端开发面试中常见的算法题(JS)前言最近在准备秋招,做过了大大小小的公司的面试题,发现除了基础知识外,算法还是挺重要的。特意整理了一些常见的算法题,添加了自己的理解并实现。除此之外,建议大家还可以刷刷《剑指offer》(但我还没刷完?,任重道远呐)。此外,左神在牛客网上也有算法课程,听了基础班的感觉还不错,起码让我这个算法小白也能快速地理解了很多问题,知识付费的时代,这个真的是良心课程了。就我个人而言的话,平时为了解决一…

    2022年6月29日
    33
  • 制作html5移动端页面,移动端H5页面制作规范「建议收藏」

    制作html5移动端页面,移动端H5页面制作规范「建议收藏」计量单位的使用css的计量单位有三种选择:px:固定的相素值em:相对父级元素的font-size设置来作为当前元素1em所代表的像素值,如父节点的font-size:10px,当前节点的font-size:1.2em,则当前节点的font-size实为12px;rem:相对根节点html的font-size设置来作为当前元素1rem所代表的像素值,与em的区别就是rem的基本度量单位与父节点…

    2022年6月21日
    44
  • 主成分分析详解_pca主成分分析贡献率

    主成分分析详解_pca主成分分析贡献率一、PCA简介1.相关背景上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分…

    2025年5月31日
    2
  • navicat premium 15永久激活码(JetBrains全家桶)

    (navicat premium 15永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSWQi…

    2022年3月21日
    578

发表回复

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

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