面向对象初探

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

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

经历了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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • opencv3编程入门_java基础与入门教程

    opencv3编程入门_java基础与入门教程——韦访 201810111、概述想学习图像处理,不管是机器学习也好,深度学习也好,不会点OpenCV好像有点说不过去吧?所以,现在开始OpenCV的学习。2、读写图片先从图片的读写开始,opencv读取图片的函数是imread,默认情况下,imread函数返回BGR格式的图像,可以用imwrite函数将数据写到本地。下面的代码会将JPG图片转成PNG。import…

    2022年10月3日
    0
  • SPPnet

    SPPnet目录1.Motivation2.SPPnet2.1SPP层的原理2.2SPPnet的区域映射原理3.总结论文:SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognition.来源:ECCV20141.MotivationR-CNN模型存在很多缺点和可改进的地方,其中的两个缺点如下:CNN网络后面接的FC层需要固定的输入大小,导致CNN也需要固定大小的输入,即要求候选区域在进入CNN前需要c

    2022年4月27日
    53
  • zabbix监控jmx

    zabbix监控jmx背景:目前公司用的主要语言就是java,然后在运维过程中会遇到频繁的内存溢出的情况,之前使用过elk日志分析系统可以实时的判断出内存溢出的情况,但是无法查看内存的使用情况,只能通过dump文件查看内存溢出的时候dump下来的文件去分析。这样也无法准确的判断出问题。zabbix可以监控java,并且将内存的使用情况实时的展现出来,这是一个不错的选择。JMX的全称是JavaManagement…

    2022年5月23日
    31
  • HDU 4859(Bestcoder #1 1003)海岸线(网络流之最小割)[通俗易懂]

    HDU 4859(Bestcoder #1 1003)海岸线(网络流之最小割)

    2022年1月27日
    54
  • 读写TGA文件

    偶尔会遇到处理TGA文件的需求,封装成类以后再用到会很方便。    类的名字叫做myTGA,提供以下功能:    1:读取文件;    2:保存文件到指定目录;    3:获取图像信息(宽,高,深度/像素占用比特数,像素通道数);    4:访问像素;    5:转换到AUX_RGBImageRec 格式;    6:设计优良的结构易于扩展(目前只支

    2022年4月6日
    47
  • java保留小数_Java保留两位小数的几种做法「建议收藏」

    java保留小数_Java保留两位小数的几种做法「建议收藏」页面或界面上展示的数据保留小数点后两位。为了达到这样的展示效果,本文列举了几个方法:1.使用java.math.BigDecimal2.使用java.text.DecimalFormat3.使用java.text.NumberFormat4.使用java.util.Formatter5.使用String.format……另外可以自己实现或者借用封装好的类库来实现,在这篇文章中…

    2022年9月24日
    0

发表回复

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

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