面向对象基础
发布日期:2022-02-26 14:49:41 浏览次数:39 分类:技术文章

本文共 2451 字,大约阅读时间需要 8 分钟。

面向对象基础第一部分

类和对象

对象(object)是一个自包含的实体,用一组可识别的特性和行为来标识。

类(class)就是具有相同的属性和功能的对象的抽象的集合。

例:

class Count{	public int Add(int num)	{		return num+1;	}}

“class”是表示定义类的关键字,“Count” 就是类名,“Add”就是类的方法。

注意:类名的首字母需要大写,如果有多个单词,各个首字母大写。

类的实例化

我们完成类的定义后,需要考虑如何去使用这个类,这时候就需要用到类的实例化了。

实例化的过程就是创建对象的过程,需要使用new关键字来创建。
例:

public void func(){	Count count = new Count();	count.Add();}

“Count count = new Count()”,可以划分成两个部分来看,第一个部分是 “Count count;”,第二个部分是 “count = new Count();”。

实例化出来的对象count,相当于具有这个类中所有的方法,当需要对象执行某个方法时,直接通过“对象名.方法名”便可调用。

构造函数

构造函数,又称构造方法,其实就是对类进行初始化。构造函数与类同名,无返回值,也不需要void,在new的时候调用,也就是说,在创建类的时候,调用构造函数。

所有的类都有构造函数,如果我们没有通过编码的方式定义构造函数,系统会默认生成空的构造函数,相反,如果我们定义了构造函数,默认的构造函数也就不会生效了。
例:

class Count    {    	private int num;    	public Count (int put)    	{    		num = put;    	}    	public int Add()    	{    		return num+1;    	}    }        public void func()    {    	Count count = new Count(1);    	count.Add();    }

通过构造函数的方式,我们可以在最初定义对象时就确定初始值,进而再调用类中的方法,进一步执行。

方法重载

方法重载提供了创建同名的多个方法的能力,但这些方法使用不同的参数类型。

注意:并不是只有构造方法可以重载,普通方法也可以重载。

class Count    {    	private int num;    	public Count (int put)    	{    		num = put;    	}    	public Count()    	{    		num = -1;    	}//将构造方法重载    	public int Add()    	{    		return num+1;    	}    }

进行方法重载时,两个方法必须方法名相同,但是参数类型或个数必须要有所不同,否则重载就没有意义了。方法重载可以在不改变原来方法的基础上,新增功能。

属性与修饰符

属性是一个方法或一对方法,但在调用它的代码看来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。

字段的含义是存储类要满足其设计所需要的数据,字段是与类相关的变量。
public表示它所修饰的类成员可以允许其他任何类来访问,称为公有的;
private表示只允许同一个类中的成员访问,其他类包括它的子类都无法访问,称为私有的。
属性的方法分为get和set两个方法。get访问器返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set访问器没有显示设置参数,但他有一个隐式参数,用关键字value表示,它的作用是调用属性时可以给内部的字段或引用赋值。

封装

封装属于面向对象的三大特性之一。每个对象都包含它只能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作,这样的方法和属性可以包装在类中,通过类的实例来实现。

封装的好处:

  1. 良好的封装可以减少耦合;
  2. 类内部的实现可以自由地修改;
  3. 类具有清晰的对外接口。

继承

对象的继承代表一种“is-a”的关系,如果两个对象A和B,可以描述为“B属于A的一种”或者“B是A”,那么就表明“B可以继承A”。实际上,继承关系可以理解为当前对象更具像的描述,继承者是对被继承者的特殊化,是被继承者之间区分的关键,它除了具有被继承者的特性外,还具备自己独有的个性。

如果子类继承父类,那么子类拥有父类非private的属性和功能,并且子类具有自己的属性和功能,即子类可以拓展父类没有的属性和功能,除此之外,子类还可以以自己的方式实现父类的功能(方法重写)。
继承也是有缺点的,那就是父类变,子类不得不变,而且继承会破坏包装,父类的实现细节会暴露给子类,增加了两个类之间的耦合性。继承是一种类与类之间强耦合的关系。

多态

多态是面向对象的第三大特性,多态表示不同的对象可以执行相同的动作,但是要通过他们自己的实现代码来执行。

注意:

  1. 子类以父类的身份出现。
  2. 子类在工作时以自己的方式来实现。
  3. 子类以父类的身份出现时,子类特有的属性和方法不可以使用。
    多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用,也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

虚方法

为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现。

通常虚拟的是方法,但其实除了字段不能是虚拟的,属性、事件和索引器都可以是虚拟的。

方法重写

子类可以选择使用override关键字,将父类实现替换为它自己的实现,这就是方法重写override,或者叫方法覆写。

转载地址:https://blog.csdn.net/qq_31820549/article/details/87830797 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Git相关问题
下一篇:同步异步,阻塞与非阻塞

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月20日 22时55分00秒