大家好,又见面了,我是你们的朋友全栈君。
经历了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账号...