面向对象初探

面向对象初探面向对象初探

大家好,又见面了,我是你们的朋友全栈君。

经历了UML,C#和设计模式,我们正在慢慢的向面向对象编程过度,那么面向对象编程究竟是怎样的呢?今天就一起来了解一下面向对象中的基础知识。

1.      类与实例

对象:对象是一个自包含的实体,用一组可识别的特性和行为来标识。(这是比较官方的定义,其实对象就是可以看到、感觉到、听到、触摸到、尝到、闻到的东西,所有的东西都是对象。)

类:具有相同的属性和功能的对象的抽象的集合。(我们人类就是每个个体人的集合)

实例:实例就是一个真实的对象。通常我们用new关键字来创建一个新的对象,即实例化一个对象。

下面通过具体代码创建一个类及一个类的实例:

class People     //创建了一个People类
{
      public string PlayGame()     //People类里有PlayGame的方法
	{
		return"basketball";
	}
}
private void play_Click()
{
	People YM = new People();        //实例化一个People类为YM,
                                         //People YM:声明一个People对象,对象名为YM
                                         //YM = new People():将YM对象实例化
	MessageBox.Show(YM.PlayGame());
}

2.      构造方法

构造方法:即构造函数,也就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new的时候就可以调用。

所有的类都有构造方法,如果事先没有自己定义的构造方法,系统就会默认生成空的构造方法,如果已经定义,则默认的构造方法就会失效。

class People
{
       private string name= "";           // 声明People类的私有字符串变量name
       public People(string name)         // 定义People类的构造方法,参数为输入的一个字符串
       {
            this.name = name;             // 将参数赋值给私有变量name,一般情况下参数和私有变量同名
       }
 
       public string Introduce()
       {
             return “我的名字叫" + name;
       }
}

3.      方法重载

方法重载提供了创建同名的多个方法的能力,方法重载时,两个方法的方法名必须相同,但是参数类型或个数必须要有所不同。

    class People
    {
       private string name= ""; 
         
       public People(string 中文名)     // 定义一个构造方法        
       {
            this.name = 中文名;             
       }

       public People(string 英文名)     // 将构造方法重载    
       {
           this.name = 英文名;            
       }
 
       public string Introduce()
       {
             return "我的名字叫" + name;
       }
    }

4.      属性

属性是一个方法或一对方法。属性有两个get 和 set 两个方法。

get : 返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用。即数据的功能。

set : 无显示设置参数,用关键字value来表示它的一个隐式参数,作用是调用属性时可以给内部的字段或引用赋值。即数据的功能。

    class People
    {
        private int playTime = 5;
        public int PlayTime
        {
            get                            // 读取时间数据
            {
                return playTime;
            }
            set                            //  写入时间数据
            {
                playTime = value;
            }
        }
    }

 

从以上代码可以看出,属性是一个字段,也就是说适合于以字段的方式使用方法调用的场合。

字段就是存储类要满足其设计所需要的数据,是与类相关的变量。相应的字段可以是public,private。

构造方法VS属性

有一段时间看设计模式,就混淆了构造方法和属性的概念。

构造方法是一个函数,有参数,无返回值。

属性是一个字段,没有参数,有返回值。

这里和VB中的过程 Sub 和函数 Function 的区别很相似。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105775.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Mac周边环境 goBASIC语言HelloWorld

    Mac周边环境 goBASIC语言HelloWorld

  • 爱比较病毒测试(不是震网病毒特点的是)

    CIH、爱虫、冲击波、熊猫烧香,对这4种网络病毒你了解多少?现在的网络病毒能够分为三类,第一类是“蠕虫”病毒,这类型的病毒是在感染电脑后经过不停地复制自己,将电脑原来的运行和储存资源耗费掉,最终电脑由于资源耗费干净而无法运行直至死机;第二类是“进犯型”病毒,这类病毒和蠕虫病毒不一样,进犯型病毒一旦感染就会对电脑软件甚至是硬件做出破坏性的进犯,威力和破坏性极端强大。最终第三类是“木马”类病毒,这类病…

  • matlab画圆的命令_matlab画圆命令资料

    matlab画圆的命令_matlab画圆命令资料%%圆环面R=6;r=2;symsuv;ezmesh((R+r*cos(u))*cos(v),(R+r*cos(u))*sin(v),r*sin(u));axisequal;%%圆盘R=6;r=2;theta=linspace(0,2*pi,90);ph=linspace(r,R,30);[t,p]=meshgrid(theta,ph);r=t*0;[x,y,z]=pol…

  • 深度学习中的batch(batch size,full batch,mini batch, online learning)、iterations与epoch

    概念引入    我们已知在梯度下降中需要对所有样本进行处理过后然后走一步,那么如果我们的样本规模的特别大的话效率就会比较低。假如有500万,甚至5000万个样本(在我们的业务场景中,一般有几千万行,有些大数据有10亿行)的话走一轮迭代就会非常的耗时。这个时候的梯度下降使用了全部的样本数据,所以叫做fullbatch。为了提高效率,我们可以把样本分成等量的子集。例如我们把500万样本分成1…

  • h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]

    h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。业务场景我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端…

  • Linux zip加密压缩「建议收藏」

    Linux zip加密压缩「建议收藏」不加密:zip-r压缩文件.zip待压缩文件加密:zip-r-P’密码’压缩文件.zip待压缩文件

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号