首页 > 其他分享 >类和面向对象

类和面向对象

时间:2023-10-06 13:45:01浏览次数:34  
标签:成员 数据类型 接口 面向对象 抽象 类型 抽象类

一、什么是类

        类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

        类的实质是一种引用数据类型,类似于short 、int(char)、long、float、double 等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

        类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的数据类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。特别地,它还会使编译器有可能检查对象的非法使用。

        类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为,它描述一个对象能够做什么以及做的方法,它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。

        类的构成包括成员属性和成员方法(数据成员和成员函数)。数据成员对应类的属性,类的数据成员也是一种数据类型,并不需要分配内存。成员函数则用于操作类的各项属性,是一个类具有的特有的操作,比如“猫猫”可以“叫”,而“西瓜”则不能。

二、什么是接口

        接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。

三、接口和类的联系

        Java里面由于一个抽象类不被允许继承多个类(多重继承),所以若要实现多个类的功能,可以通过实现多个接口来实现。亦即接口就是类和外界发生交互的操作,接口的主要目的是为不相关的类提供通用的处理服务。

        Java接口和Java抽象代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP的面向对象编程,如果要提高程序的复用率、增加程序的可维护性和可扩展性,就必须是面向接口的编程、面向抽象的编程。正确地使用接口、抽象类这些抽象类型作为Java结构层次上的顶层。

四、接口和类的区别

        本质上来说,抽象类和它的实现者是一种继承关系,也就是说,作为父类的抽象类和它的子类之间必须存在“Is a”的关系。但对于接口来说,不需要它的实现类和它之间存在概念上的一致性,实现类只是实现了接口的契约而已。

        抽象类定义继承关系,能够保证实现的层次关系,避免代码重复,但过于复杂的继承关系会导致类膨胀。接口定义行为模型,能够更有效地分离行为与实现,为代码的维护和修改带来方便。    

  • 抽象类中可以有构造方法,接口中没有。
  • 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
  • 抽象类中可以有普通成员变量,接口中没有普通成员变量。
  • 抽象类中可以包含静态方法,接口中不能包含静态方法。
  • 抽象类中的抽象方法的访问类型可以是 public,protected ,但接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
  • 一个类可以实现多个接口,但只能继承一个抽象类。
  • 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只是public static final 类型,并且默认即为 public static final 类型。

标签:成员,数据类型,接口,面向对象,抽象,类型,抽象类
From: https://www.cnblogs.com/xhengge/p/17744487.html

相关文章

  • Learning Hard C# 学习笔记: 5.C#中的面向对象编程
    目前除C#外流行的面向对象编程的几个语言分别是:Java,C++等;面向对象的语言都具有以下特征:封装-将客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性;继承-子类通过继承可以复用父类的代码;多态-允许将子对象赋值给父对象的一种能力.5.1封装封装指的是......
  • java面向对象
    一面向对象和面向过程面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分面向过程(算法+数据结构=程序)规模比较小的问题,分解为过程的开发方式比较理想面向功能划分软件结构以方法为单位面向对象(数据在第一位,再考虑......
  • java基础-面向对象
    1面向对象之类与对象#类: 是抽象的概念,笼统的,不具体的人类狗类鸟类#对象: 对象又叫实体,类的具体表现人类中:厨师,学生,老师狗类:小狗1号,小黑狗#每个人对象都会有:姓名,性别,年龄,不同对象,属性又不一样#每个人的对象都会有方法:说话,走路1.1类的定义规......
  • 头歌(educoder)第 6 章 Java面向对象之常用类
    头歌(educoder)第6章Java面向对象之常用类目录Java面向对象-常用类(初级)第1关String类第2关:StringBuffer类第3关:Math类第4关Random类第5关:知识回顾Java面向对象-String类第1关length()方法与compareTo()方法的使用-花名册第2关substring()......
  • 什么是面向对象?
    目录什么是面向过程?什么是面向对象?面向对象的主要特征一.封装性二.继承性三.多态性Java语言最大的特点在于面向对象的编程设计。Java也是从面向过程逐渐传向面向对象。上一节我们脑海中已经有了对象的概念,这节课我们来从以下几个方面全方位修习面向对象这一部分。(这节属于八股文......
  • Golang struct 结构体 面向对象编程思想-抽象 理解抽象
    我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。当你将一类事物的属性和行为抽取出来之后,下一步就是将代码体现出来。下面就是模拟银行卡存款取款查询余额方式。packagemainimport"fm......
  • 学过了这么多面向对象的编程语言,你知道他们的对象是谁吗?
    个人主页:【......
  • 面向对象 静态方法和动态方法 ;静态更先进因为新建和被调用时不需要传self
    展示动态方法 需要加self#A.py调用B的制作伞和扇子fromBimportHandmadeclassWeather:def__init__(self,type):self.type=typedefaction(self):f=Handmade.make_fan(self)u=Handmade.make_umbrella(self)pri......
  • 用策略模式干掉代码里大量的if-eles或则Swatch,提升B格由面向过程转为面向对象
    现象大量的分支选择型代码段看着让人头疼for(Fieldfield:declaredFields){Class<?>type=field.getType();Stringkey=field.getName();Elementresult=resultMap.addElement("result");result.addAttribute......
  • CPP面向对象笔记
    基本属性即在类中包含的一系列变量方法即在类中定义的一系列函数Public,PrivateandProtected在没有继承的情况下,private与protected效果相同即都无法在类外直接访问调用实在想要访问,加个函数就行public则可以随意访问调用static仅与类的整体全局有关不受具体哪......