Object Oriented Programming(2)

2024-04-17 13:32
文章标签 object programming oriented

本文主要是介绍Object Oriented Programming(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 写在前面
  • 继承
    • 基本概念:
    • 多态:
    • final类与方法
    • 抽象类
    • Object类——所有类的父类
    • 包装器与自动打包拆包
    • 变参方法
  • Java注释
    • 块注释
    • 方法注释
    • 通用注释

写在前面

续更(1-类与对象),本篇为继承与多态,附一点javadoc注释内容,就剩3-接口啦!

继承

基本概念:

  • 父类:又称超类、基类
  • 子类:又称派生类
  • 继承了父类所有的属性与方法
  • 重写(@Override) 子类重写父类方法
  • super关键字调用父类,调用构造器必须是构造器第一句。在构造过程中,子类将调用父类没有参数的构造器,若父类没有,且子类不调用父类其他构造器,编译器报错
  • 多态:一个对象变量可以指示多种实际类型的现象称为多态。而在运行时能自动选择调用哪个对象的方法的现象称为动态绑定。
  • java不支持多继承,实现多继承的方法是接口

多态:

  • 原因大概是向上造型是合法的。
  • 动态绑定的调用过程:
  1. 编译器查看声明类型与方法名
  2. 重载解析
  3. 若有static、final、private关键字或构造器已经知道调用哪个方法,该过程称为静态绑定。
  4. 否则程序运行时进行动态绑定:java虚拟机为每个类创建方法表,运行时从实际类型开始找,而后调用方法

final类与方法

  • final类阻止继承,final方法阻止@Override。

抽象类

  • abstract 方法与abstract类:例如Person中有getDescription方法
  • 抽象类中可以有具体属性与方法,Person具有name属性
  • 抽象类不可以被实例化!!!

Object类——所有类的父类

  • java中,只有基本类型不是对象,其他都是object类的子类
  • 几个重要的方法:
  1. equals():通常需要Override,相等应具有对称性、自反性、传递性、一致性等。getClass与instanceof检测。Object中的equals是指引用相等。
  2. hashCode():Object对象中的方法是存储地址。相等的对象必须有相等的hash值,所以equals被重写一般也要重写hashCode。
  3. toString():Object对象中的方法是类名+[属性]。只要打印对象的地方都会自动调用toString方法,所以常常需要Override。

包装器与自动打包拆包

  • Integer、Float、Double、Boolean等,包装器是不可变的,且是final
  • Autoboxing:
    ArrayList<Integer> list = new ArrayList<Integer>();list.add(3);    //等价于 list.add(Integer.valueof(3));Integer n = 3;n++;    //自动拆包
  • 包装器是对象,故他们之间的比较通常用equals而不用==。
  • 包装器是编译器认可的,而不是虚拟机。

变参方法

  • eg:printf:
    printf(String fmt,Object... args)  //args是obj数组,基本类型将被autobox成对象。

Java注释

块注释

		/** BSearchSolution s = new BSearchSolution();* System.out.println(s.searchInsert(new int[] { 1, 3, 5, 6 }, 5));*/	//     快捷键CTRL+SHIFT+/;

方法注释

/** Raise the salary of an employee.* * @param* * @return* * @throws*/

通用注释

@author
@version
@since…

这篇关于Object Oriented Programming(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911929

相关文章

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

王立平--Object-c

object-c通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。在MA

COD论文笔记 ECCV2024 Just a Hint: Point-Supervised Camouflaged Object Detection

这篇论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点: 1. 动机 伪装物体检测(Camouflaged Object Detection, COD)旨在检测隐藏在环境中的伪装物体,这是一个具有挑战性的任务。由于伪装物体与背景的细微差别和模糊的边界,手动标注像素级的物体非常耗时,例如每张图片可能需要 60 分钟来标注。因此,作者希望通过减少标注负担,提出了一种仅依赖“点标注”的弱

COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection

论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点如下: 动机: 论文的核心动机是解决伪装目标检测(COD)中的挑战性任务。伪装目标检测旨在识别和分割那些在视觉上与周围环境高度相似的目标,这对于计算机视觉来说是非常困难的任务。尽管深度学习方法在该领域取得了一定进展,但现有方法仍面临有效分离目标和背景的难题,尤其是在伪装目标与背景特征高度相似的情况下。 现有方法的不足之处: 过于

《Zero-Shot Object Counting》CVPR2023

摘要 论文提出了一种新的计数设置,称为零样本对象计数(Zero-Shot Object Counting, ZSC),旨在测试时对任意类别的对象实例进行计数,而只需在测试时提供类别名称。现有的类无关计数方法需要人类标注的示例作为输入,这在许多实际应用中是不切实际的。ZSC方法不依赖于人类标注者,可以自动操作。研究者们提出了一种方法,可以从类别名称开始,准确识别出最佳的图像块(patches),用

sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such

在Zabbix Server服务器上安装oracle-instantclient11.2后,结果使用sqlplus命令时遇到“sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory“错误,下面总结一下解决过程。

Object::connect: No such slot

信号槽出现这样的问题一定要注意以下几点: ThreadFromQThread work_download ; QObject::connect(this, SIGNAL(send_down_sig(int)),\ &work_download, SLOT(recv_down_info(int))); 注意槽函数仅仅是填