面向对象初探

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

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

经历了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 的区别很相似。

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Drupal8 入门教程(一)安装部署[通俗易懂]

    Drupal8 入门教程(一)安装部署[通俗易懂]一、Drupal简介Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于P

    2022年7月4日
  • LoadLibrary失败

    LoadLibrary失败LoadLibrary失败 今天同事遇到一个问题,经高手指点,完美解决。不过解决方法总是感觉有点不妥,不知道有没有其它方法。 正常情况,在一个exe中LoadLibrary(DLL1)可以获得正常的结果; 但是,当我们需要load的DLL1如果调用了其它的DLL2,那么我们就会得到一个结果:Theprogramcantstartbecause****.dl

    2022年7月26日
  • ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)

    ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)前言最近博主为了准备七月份的百度之星的算法比赛,把C++STL的相关语法又重新学习了一遍,然后整理成此文,本文内含string、vector、deque、stack、queue、list、set、map共9种容器的概念及常用操作语法,以及对STL的遍历、查找、排序、替换、算术生成等常用算法的用法和示例,供读者阅读收藏,学习参考。给大家推荐博主本人学习过的一个c++STL质量极高的课程链接:C++进阶之STL,很适合0基础想快速入门C++STL的朋友,关于想进阶的朋友,可以去看候捷老师的C++S

    2022年7月18日
  • python爬取股票代码_python爬取所有股票的个股资讯「建议收藏」

    python爬取股票代码_python爬取所有股票的个股资讯「建议收藏」前言由于毕设是要对股票的新闻报道进行情感分析,所以爬取所有股票的个股资是必要的前提工作了。一开始准备直接在东方财富网上爬取所有的个股资讯,但是在获得个股资讯列表的时候要模拟事件。前提工作安装python3(下载地址),在安装的时候选择添加到环境变量,如果没有选择,可以通过【右键我的电脑】->【属性】->【高级系统设置】->【环境变量】->【path】将安装的Python3的…

    2022年10月30日
  • sass scss区别_scss是什么

    sass scss区别_scss是什么Sass和SCSS其实是同一种东西,我们平时都称之为Sass,两者之间不同之处有以下两点:Sass是以”.sass”后缀为扩展名,Scss是以scss后缀为扩展名Sass是以严格的缩进式语法规则书写,不带{}和分号Scss语法属性和css语法书写方式非常类似,带大括号和分号。…

    2022年10月23日
  • vue和jQuery一起使用「建议收藏」

    vue和jQuery一起使用「建议收藏」vue使用了虚拟DOM,它的功能就是不需要开发者直接做dom操作,所以不建议使用vue同时还使用jQuery。然后说正题,当vue组件被创建时,它会把组件渲染到页面中,而jQuery通过绑定DOM才能进行操作jQuery代码在Mounted周期内进行,此时vue已经渲染完毕,jQuery才可以找到对应的DOM如果需要JQuery更新DOM,则在Mounted周期内不被允许,需要通过…

    2022年10月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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