学半年编程才知道“面向对象”可以这样理解
学半年编程才知道“面向对象”可以这样理解
面向对象是向现实世界模型的自然延申,是一种“万物皆对象”的一种编程思想。
什么是万物皆对象,对象有具体表现在哪些地方:在现实生活中的任何物体都可以归为一类事物,这一类事物可以理解成“对象”,而每一个单独的个体都是一类事物的实例。
“对象”的概念也可以这样理解:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——这全部一个整体称之为“对象”。
面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。
学习面向对象配上这些课程,将会更加方面“面向对象”理解:
Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibili
【大力推荐】OOP面向对象Java基础干货分享/JavaSE/面向对象编程/OOP程序设计_哔哩哔哩_bilibili
JavaSE基础入门教程-只为初学者而著_高淇Java300集/Java零基础/java/Java入门到精通/JAVA编程/JavaSE/Java基础_哔哩哔哩_bilibili
面向对象有三大特性分别是:封装、继承、多态。
也正是因为这三大特性才使得“面向对象”面向对象编程范式触及的领域,已经不单单纯在于计算机。
1.面向对象之封装:
封装最好理解了,是对象和类概念的主要特性。
封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。这样做使得代码的复用性更高。
并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
简单来说就是把一类“物体”用箱子装起来,并留下一个可以用“手”拿到物体的洞。类似于抽奖的纸箱。
2.面向对象之继承:
继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类--有父类的行为和属性,也有自己特有的行为和属性。这样做扩展了已存在的代码块,进一步提高了代码的复用性。
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。
在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。
继承的好处
子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;
继承的缺点
继承定义了类如何相互关联,共享特性。但同时也破坏啦封装的特性,对于父类而言他的特性细节对于子类而言是透明的,
并且父类变更、子类必须变更,继承是一种强耦合性关系,需谨慎继承。
学习继承一定少不了这三个东西:构造器、protected关键字、向上转型
构造器
通过上述我们知道子类可以继承父类的属性和方法,除了那些private外还有一样是子类继承不了的那就是:构造器。
对于构造器而言,它只能够被调用,而不能被继承。 如要调用父类的构造方法我们可以使用super()。
protected关键字
当我们尽可能的想要隐藏一些变量、方法时,但是还需要允许子类的成员来访问他们。这时候就需要使用到protected关键字;
向上转型
它除了拥有被继承者的特性外,还拥有自己独有得特性。例如猫有抓老鼠、爬树等其他动物没有的特性。同时在继承关系中,
继承者完全可以替换被继承者,反之则不可以,例如我们可以说猫是动物,但不能说动物是猫就是这个道理,其实对于这个我们将其称之为“向上转型”。
将子类转换成父类,在继承关系上面是向上移动的,所以一般称之为向上转型。由于向上转型是从一个叫专用类型向较通用类型转换,所以它总是安全的,唯一发生变化的可能就是属性和方法的丢失。
这就是为什么编译器在“未曾明确表示转型”活“未曾指定特殊标记”的情况下,仍然允许向上转型的原因。
3.面向对象之多态:
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。
多态的一大作用就是为了解耦--为了解除父子类继承的耦合度。如果说继承中父子类的关系式IS-A的关系,那么接口和实现类之之间的关系式HAS-A。
简单来说,多态就是允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的。
例如老师教学生上课这个过程,用来解释一下多态性,把老师当作一个对象,老师类相同的属性:姓名、性别、年龄等,相同的方法:讲课、布置作业等。
而通过老师类接口可以被多个相同的类使用,可被分为语文老师类、数学老师类、地理老师类等等。并且每个类都有父类的属性特征,也都有自己独立的特性。-以上就是面向对象三大特性之:多态。
以上就是“面向对象”的简单概念。
理解伙伴点赞支持一下~~支持就是动力哦