JAVA封装,继承,多态详解

article/2025/9/18 13:42:50

Java的三大特性为封装,继承,多态。

封装

       封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内部结构。也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。

package pojo.demo01;public abstract class Pet {private String name;//名字private int health; //健康值public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}//吃东西的方法public abstract void eat();
}

以下提供get(),set()方法和eat()吃东西方法,外部类去调用时只知道方法并不知道内部怎么实现的。

继承

         继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

 示例

package pojo.demo01;public class Dog extends Pet{//重写父类的吃东西的方法public  void eat(){//健康值加15System.out.println("狗狗");System.out.println("健康值为:"+this.getHealth());this.setHealth(this.getHealth()+15);System.out.println("汪汪汪~骨头不错哦,健康值+15");System.out.println("吃完健康值为:"+this.getHealth());};
}

代码中Dog类继承了上面Pet类,具有了Pet宠物类中的get()和set()方法,并且子类继承之后还可以重写父类的方法。

多态

       所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

Pet a = dog
Pet b = cat
Pet c = pig
        这里所表现的的就是多态。dog、cat、pig都是pet的子类,我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——我们只有在运行的时候(喝的时候)才会知道引用变量所指向的具体实例对象。所以多态能让子类对象调用同一个父类传参方法而不需要写每个子类都写一个具体的父类方法。多态就是: 同一个引用类型,使用不同的实例而执行不同操作

package pojo.demo01;public class Lady {private String name;//名字public String getName() {return name;}public void setName(String name) {this.name = name;}//构造方法public Lady(String name) {this.name = name;}//养宠物的方法//以父类作为方法的参数,实现多态public void feed(Pet pet){pet.eat();}
}

package pojo.demo01;public abstract class Pet {private String name;//名字private int health; //健康值public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}//吃东西的方法public abstract void eat();
}

     

import pojo.demo01.Cat;
import pojo.demo01.Dog;
import pojo.demo01.Lady;public class Demo01 {public static void main(String[] args) {//创建一个小主人Lady l1 = new Lady("lily");//创建两个宠物,属于小主人的宠物Dog d = new Dog();d.setName("大黄");d.setHealth(60);Cat c = new Cat();c.setName("蓝猫");c.setHealth(50);//小主人喂养小狗l1.feed(d);//小主人喂养小猫l1.feed(c);}
}

多态也可以分为向上转型和向下转型,根据具体的需要来转变状态,装为父对象可以作为形参直接调用父类中的方法,并把自己作为参数,JVM会根据实参来确定调用的子类方法,如果需要调用子类特有的private私有属性和方法,需要强制转型成子类对象,实参与某子类对象不符时不能强制转型,需要用instanceof方法来判断是类型是否一致在强制转型。

public class TestInstanceof {
    public static void main(String[] args) {
        //向上转型
        Pet p = new Dog();
        //向下转型
        Cat c = (Cat)p;//p的实参为Dog类,不能转成Cat()类。
    }
}

借助instanceof来实现向下转型。

public class TestInstanceof {
    public static void main(String[] args) {
        //向上转型
        Pet p = new Dog();
        //判断p是否是Dog类型
        if(p instanceof Dog){
            //如果是,我们就能转换
            Dog d = (Dog)p;
        }else if(p instanceof Cat){
            //向下转型
            Cat c = (Cat)p;
        }
    }
}


http://chatgpt.dhexx.cn/article/7ATr33cu.shtml

相关文章

封装,继承,多态

面向对象的三个基本特征 面向对象的三个基本特征是:封装、继承、多态。其中,封装 可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态…

java之封装,继承,多态

一,前言 ​ 今天总结一下关于Java的三大特性,封装,继承,多态。其实关于三大特性对于从事编程人员来说都是基本的了,毕竟只要接触Java这些都是先要认识的,接下来就系统总结一下。 二,封装 ​ …

封装 继承和多态

封装继承和多态 封装 我们在设计程序时,讲究六个字,高内聚,低耦合 封装就是我们对数据进行隐藏,多用于来封装属性,封装方法较少。 记住封装的核心,就是私有(private) 令属性为私…

js面向对象之封装,继承,多态,类的详解

封装 在面向对象的操作中,我们有完全不同的一些写法。 想要封装我们的对象,就要用到构造函数。我们需要创建构造函数,构造函数和函数一致,都是通过function创建的 首字母大写(规范,为了和普通函数进行区…

【c++ 封装、继承、多态】

文章目录 面向对象的三个基本特征1. 封装2. 继承2.1 继承的三种实现方式 3. 多态3.1 多态的俩种实现方式分析3.2 多态存在的三个必要条件3.3 C多态机制的实现: 4. 动态绑定与多态4.1 什么是动态绑定4.2 动态绑定发生的条件?4.3 动态绑定的实际意义4.4 程…

Java基础—封装继承多态(详细)

文章目录 面向对象三大特征 封装 继承 多态1.封装2.继承2.1注意事项参考文档2.2 this和super关键字2.3 重载和重写 3.多态3.1方法的多态3.2对象的多态3.3多态转型3.3.1向上转型3.3.2向下转型3.3.3 instanceof 关键字 面向对象三大特征 封装 继承 多态 1.封装 定义:就是把事物…

Java中的封装,继承和多态(详解)

目录 封装继承多态接口 一些建议和小结写在最后的话 封装 所谓的封装就是把类的属性和方法使用private修饰,不允许类的调用者直接访问,我们定义如下一个类,可以看到所有的成员变量和成员方法都使用private修饰了,我们现在来使用一…

封装、继承、多态

目录 访问限定符 封装 继承 super关键字 super和this的比较 继承在内存中的情况 重写override 重写和重载的比较 多态 JAVA中的动态绑定机制 JAVA面向对象程序三大特性:封装、继承、多态。在类和对象阶段,主要研究的就是封装特性。 在了…

【Java基础】 ⾯向对象编程三⼤特性 --封装、继承、多态

文章目录 封装继承多态 封装 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 通俗的说,一个类就是一个封装了数…

Java基础知识之封装+继承+多态详解

前言 这篇博客是基于Java类和对象的基础之上的相关知识点。因为特别重要且语法规则较多,所以想单独总结方便之后复习。 本篇博客涉及知识点思维导图: 目录 1.封装 2.继承 3.多态 1.封装 生活中有很多东西我们并不想让其它人知道,比如我的身…

封装、继承和多态

目录 前言一、什么是封装?二、什么是继承?三、什么是多态? 前言 其实封装、继承和多态不仅仅是java的特性,而是所有面向对象程序的三大特性。 一、什么是封装? 封装就是对类内部的实现细节进行隐藏,然后…

封装、继承、多态 详解

面向对象的三个基本特征:封装、继承、多态 1.封装 (1)封装是实现面向对象的第一步,封装就是将数据或函数等集合在一个单元中(类)。被封装的对象通常被称为抽象数据类型。 (2)类具…

面向对象编程三大特性------封装、继承、多态

一、封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节&am…

人脸识别API接口 活体检测 人证比对 人身核验

技术原理 l通过自拍获得自拍照,或者通过活体SDK获得活体照片; l通过姓名、身份证号获得公安带网纹照片,通过去网纹技术得到清晰照片; l自拍照或者活体照片与公安照片进行比对; l确认用户与比对证件为同一人。 适用…

浅谈私有云端的人脸识别与人证比对

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。 而私有云人脸识别人证对比系统是一款基于…

论文精读|大规模双样学习用于人证比对

点击上方“AI公园”,关注公众号 之前分享过Docface,Docface,这篇是在Docface之前的一篇文章,也是专门处理人证比对问题,也是用到了imprint的技术,Docface就是参考了这篇文章中的imprint。 Large-scale Bisample Learni…

基于人脸识别开发人证比对访客系统

2019独角兽企业重金招聘Python工程师标准>>> 原作者 panmingzhi 最近有个小区用到了虹软的人脸识别,效果还不错。又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的。 码字前先上项目地址:https://gite…

人脸识别技术开发人证比对访客系统

原作者 panmingzhi 最近有个小区用到了虹软的人脸识别,效果还不错。又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的。 码字前先上项目地址:https://gitee.com/panmingzhi/IdCardFaceIdentifier 首先是读证的问题…

人脸识别、人证比对核验数据特点

一、人证合一验证系统产品简介: 人证合一验证系统是一套利用专业证件扫描设备和身份证阅读机具,实现采集持证人相片与所持证件人相关信息发送至公安部身份证副本库进行生物特征比对,验证人与证是否一致的软硬件结合系统。 从技术上基本解决了这两个主要问题:利用经公安部…

双目活体检测摄像头|离线式人证比对|人脸识别SDK

产品概述 中安未来双目防伪人证核验设备(TH-DE300)是一款基于中安未来自主独立研 发的双目多光谱生物识别技术,打造的一体化终端产品,主要适用于需要进行人证合一验证 的业务场景,对被验证人员身份进行验证。如防止冒用他人办理业务、刷脸控制…