封装 继承和多态

article/2025/9/18 13:46:41

封装继承和多态

封装

我们在设计程序时,讲究六个字,高内聚,低耦合
封装就是我们对数据进行隐藏,多用于来封装属性,封装方法较少。

记住封装的核心,就是私有(private)

令属性为私有后我们调用不了类里面的属性,所以我们设置一些get方法和set方法来操作私有的属性

get方法,set方法


public int getAge(){return age;
}
public void setAge(int age){this.age = age;
}

具体代码应用

设置一个学生类,令其定义的属性私有
在类里面设置get set方法,使主函数可以调用类里面私有的属性

package com.oop.demo03;public class Student {//属性私有private String name;private int id;private char sex;private int age;//提供一些可以操作这些属性的方法//提供一些public的get和set方法//get方法 得到这个属性public String getName(){return this.name;}//set 为属性设置一些值public void setName(String name){this.name=name;}//alt+insert 自动生成get set方法public int getId() {return id;}public void setId(int id) {this.id = id;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {if (age>150 || age<0){//不合法的this.age=3;}else {this.age = age;}}
}

设置一个应用类,用来操作学生类

import com.oop.demo03.Student;public class Application {public static void main(String[] args) {Student s1 = new Student();s1.setName("小张");System.out.println(s1.getName());s1.setAge(999);//不合法的年龄System.out.println(s1.getAge());}}

在这里插入图片描述
在idea里可以使用快捷键alt+insert快速生成get set 方法

继承

  • 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
  • java中只能单继承,一个父亲可以有多个儿子,但是一个儿子只能有一个父亲
  • 子类可以继承父类的全部方法,私有不可以被继承。

关于生活中的继承
人类(Person) //父类
- 老师类(Teacher) //子类,派生类
- 学生类(Student) //子类,派生类

public
protect
default
private

继承格式

class 父类 {
}

class 子类 extends 父类 {
}

代码举例

创造一个Person类

public class Person {public int money = 1_0000_0000;public void say(){System.out.println("说了一句话");}}

创造一个Student类继承Person类

public class Student extends Person {
}

在Application中进行测试

public class Application {public static void main(String[] args) {//因为Student继承了父类,所以可以直接使用父类的方法Student student = new Student();student.say();System.out.println(student.money);}
}

在这里插入图片描述
代码结果证明,子类可以完全继承父类的方法

super方法

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法

父类

public class Person {protected String name =  "小张";}

子类

public class Student extends Person {private String name = "小小张";public void test(String name){System.out.println(name);System.out.println(this.name);System.out.println(super.name);}}

主函数

public class Application {public static void main(String[] args) {Student student = new Student();student.test("张瑞");}
}

在这里插入图片描述

方法重写

重写可以理解为子类想要改变父类原来的方法,所以重写了方法
重写:

  1. 需要有继承关系,子类重写父类的方法
  2. 方法名必须相同
  3. 参数列表必须相同
  4. 抛出异常的方位可以缩小不能扩大
  5. 方法体不同
public class B {public void test(){System.out.println("B=>test()");}
}
public class A extends B{@Overridepublic void test() {System.out.println("A=>test()");}
}
public class Application {public static void main(String[] args) {A a = new A();a.test();B b = new A();b.test();}
}

在这里插入图片描述

多态

多态就是一个方法可以根据发送对象的不同而采取多种不同的行为的方式
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多

多态存在的条件

  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象
  • 注意:多态是方法的多态,属性没有多态性。

多态注意事项:

1.多态是方法的多态,属性没有多态

2.父类和子类,有联系类型转换异常! ClassCastException !

3.存在条件:继承关系, 方法需要重写,父类引用指向子类对象! Father f1 = new Son();

下面三种类型不可以重写,没有多态:

  1. static方法,属于类,它不属于实例
  2. final 常量;
  3. private方法;

父类

public class Person {public void rnu(){System.out.println("run");}}

子类

public class Student extends Person {@Overridepublic void rnu() {System.out.println("son");}public void eat(){System.out.println("eat");}
}

测试

public class Application {public static void main(String[] args) {Student s1 = new Student();Person s2 = new Student();Object s3 = new Student();s1.rnu();s2.rnu();s1.eat();}
}

在这里插入图片描述

写在最后
最短的距离是手到嘴,最长的距离是说到做


http://chatgpt.dhexx.cn/article/UyY8d6mf.shtml

相关文章

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

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

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

文章目录 面向对象的三个基本特征1. 封装2. 继承2.1 继承的三种实现方式 3. 多态3.1 多态的俩种实现方式分析3.2 多态存在的三个必要条件3.3 C多态机制的实现&#xff1a; 4. 动态绑定与多态4.1 什么是动态绑定4.2 动态绑定发生的条件&#xff1f;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修饰&#xff0c;不允许类的调用者直接访问&#xff0c;我们定义如下一个类&#xff0c;可以看到所有的成员变量和成员方法都使用private修饰了&#xff0c;我们现在来使用一…

封装、继承、多态

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

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

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

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

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

封装、继承和多态

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

封装、继承、多态 详解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

人脸识别人证比对技术SDK

人脸识别人证比对技术SDK 人脸识别人证比对技术SDK 一、人脸识别人证比对技术1&#xff1a;1及1&#xff1a;N概念 人脸识别人证比对技术1:1如我们现在在宾馆、网吧、机场安检等的人与身份证上的照片进行比对的应用&#xff0c;用来证明自己是自己。想想&#xff0c;目前我们在…

人证比对的解决方案

人证比对的解决方案 目前&#xff0c;人证比对应用的场景很多&#xff1a;机场、高铁站过安检&#xff1b;P2P的软件注册&#xff1b;酒店、网吧、手机营业厅、银行开户&#xff1b;以及政府单位的一些柜台。1:1人脸比对有着用户量大、行业广、比对速度快、精准、使用方便、成本…

PockerFace 离线版人证比对 SDK 编程指南

深圳市喜汇信息科技有限公司(PockerFace)是一家通过深度学习框架打造新一代人脸识别技术的科技创新公司&#xff0c;具有完全自主知识产权的核心技术&#xff0c;在人脸检测、人脸识别、人脸属性检测、活体检测、人脸搜索等多个领域均有原创性创新。检出率、错检率、误检率、检…