面向对象初探

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

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

经历了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)
上一篇 2022年4月24日 下午9:20
下一篇 2022年4月24日 下午9:20


相关推荐

  • IDEA打jar包在服务器运行出现Error:Invalid or corrupt jarfile xxx.jar 报错+如何使用IDEA打jar包

    IDEA打jar包在服务器运行出现Error:Invalid or corrupt jarfile xxx.jar 报错+如何使用IDEA打jar包JAR包错误:Error:Invalidorcorruptjarfilexxx.jar错误背景:IDEA打包springboot项目为jar包。打包方法百度了好几种,结果都在运行时报了Error:Invalidorcorruptjarfilexxx.jar错误。…

    2022年8月22日
    11
  • MySQL数据库:触发器Trigger

    MySQL数据库:触发器Trigger

    2021年10月4日
    44
  • MySQL的HAVING用法「建议收藏」

    MySQL的HAVING用法「建议收藏」来自:https://blog.lmlyz.online/index/detail/id/59.htmlwhere、聚合函数、having在from后面的执行顺序:where>聚合函数(sum,min,max,avg,count)>having若须引入聚合函数来对groupby结果进行过滤则只能用having。(是先执行聚合函数还是先过滤然后比对我上面列出的执行顺序…

    2022年6月18日
    41
  • 架构师是做什么的?

    架构师是做什么的?哈佛大学有一个非常著名的关于目标对人生影响的跟踪调查 调查的对象是一群智力 学历 环境等条件都差不多的大学毕业生 结果是这样的 第一类人 27 的人 没有目标 第二类人 60 的人 目标模糊 第三类人 10 的人 有清晰但比较短期的目标 第四类人 3 的人 有清晰而长远的目标 以后的 25 年 他们开始了自己的职业生涯 25 年后 又对这些调查对象跟踪调查 他们的职业和生活状况发生

    2026年3月19日
    0
  • 小数和二进制的转换_进制转换表

    小数和二进制的转换_进制转换表1.小数用二进制如何表示首先,给出一个任意实数,整数部分用普通的二进制便可以表示,这里只说小数部分如何表示例如0.6文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。特殊情况:小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表

    2025年6月17日
    3
  • Spring3.0 AOP 具体解释

    Spring3.0 AOP 具体解释

    2021年12月8日
    46

发表回复

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

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