5.面向对象-封装-成员方法
5.1 知识点
成员方法申明
基本概念
- 成员方法(函数)用来表现对象行为
- 申明在类语句块中
- 用来描述对象的行为
- 规则和函数申明规则相同
- 受到访问修饰符规则影响
- 返回值参数不做限制
- 方法数量不做限制
注意:
- 成员方法不要加
static
关键字 - 成员方法必须实例化出对象再通过对象来使用,相当于该对象执行了某个行为
- 成员方法受到访问修饰符影响
申明人类成员方法
// 人类
class Person
{
// 成员变量,有些人习惯把它写在成员方法后面也可以
public string name; // 名字
public int age; // 年龄
public Person[] friends; // 朋友们
/// <summary>
/// 判断是否成年
/// </summary>
/// <returns></returns>
public bool IsAdult()
{
return age >= 18;
}
/// <summary>
/// 说话的行为
/// </summary>
/// <param name="str">说话的内容</param>
public void Speak(string str)
{
Console.WriteLine("{0}说{1}", name, str);
}
/// <summary>
/// 添加朋友的方法
/// </summary>
/// <param name="p">传入新朋友</param>
public void AddFriend(Person p)
{
// 如果朋友数组是空
if (friends == null)
{
// new一个朋友们数组,把当前朋友传进去
friends = new Person[] { p };
}
// 否则有朋友数组
else
{
// 新建一个新朋友数组,长度是老朋友数组+1
Person[] newFriends = new Person[friends.Length + 1];
// 遍历逐个搬家
for (int i = 0; i < friends.Length; i++)
{
newFriends[i] = friends[i];
}
// 把新加的朋友放到最后一个
newFriends[newFriends.Length - 1] = p;
// 地址重定向
friends = newFriends;
}
}
}
成员方法的使用
主函数内
// 成员方法必须实例化出对象再通过对象来使用,相当于该对象执行了某个行为
Person p1 = new Person();
p1.name = "林文韬";
p1.age = 18;
p1.Speak("我爱你"); // 林文韬说我爱你
if (p1.IsAdult()) // 年龄大于18才会输出
{
p1.Speak("我要耍朋友");
}
Person p2 = new Person();
p2.name = "火山哥";
p2.age = 16;
p1.AddFriend(p2); // p1添加新朋友p2
// 遍历p1朋友数组,输出p1所有朋友的名字
for (int i = 0; i < p1.friends.Length; i++)
{
Console.WriteLine(p1.friends[i].name); // 火山哥
}
总结
- 成员方法
- 描述行为
- 类中声明
- 任意数量
- 返回值和参数根据需求决定
5.2 知识点代码
using System;
namespace Lesson3_封装_成员方法
{
#region 知识点一 成员方法申明
//基本概念
//成员方法(函数) 用来表现对象行为
// 1.申明在类语句块中
// 2.是用来描述对象的行为的
// 3.规则和函数申明规则相同
// 4.受到访问修饰符规则影响
// 5.返回值参数不做限制
// 6.方法数量不做限制
//注意:
//1.成员方法不要加static关键字
//2.成员方法 必须实例化出对象 再通过对象来使用 相当于该对象执行了某个行为
//3.成员方法 受到访问修饰符影响
//人 类
class Person
{
//成员变量 有些人习惯把他写在成员方法后面 都可以
public string name;//名字
public int age;//年龄
public Person[] friends;//朋友们
/// <summary>
/// 判断是否成年
/// </summary>
/// <returns></returns>
public bool IsAdult()
{
return age >= 18;
}
/// <summary>
/// 说话的行为
/// </summary>
/// <param name="str">说话的内容</param>
public void Speak(string str)
{
Console.WriteLine("{0}说{1}", name, str);
}
/// <summary>
/// 添加朋友的方法
/// </summary>
/// <param name="p">传入新朋友</param>
public void AddFriend(Person p)
{
//如果朋友数组是空
if(friends == null)
{
//new一个朋友们数组 把当前朋友传进去
friends = new Person[] { p };
}
//否则有朋友数组
else
{
//新建一个 新朋友数组 长度是老朋友数组+1
Person[] newFriends = new Person[friends.Length + 1];
//遍历逐个搬家
for (int i = 0; i < friends.Length; i++)
{
newFriends[i] = friends[i];
}
//把新加的朋友放到最后一个
newFriends[newFriends.Length - 1] = p;
//地址重定向
friends = newFriends;
}
}
}
#endregion
class Program
{
static void Main(string[] args)
{
Console.WriteLine("成员方法");
#region 知识点二 成员方法的使用
//主函数内
//成员方法 必须实例化出对象 再通过对象来使用 相当于该对象执行了某个行为
Person p1 = new Person();
p1.name = "林文韬";
p1.age = 18;
p1.Speak("我爱你");//林文韬说我爱你
if (p1.IsAdult())//年龄大于18才会输出
{
p1.Speak("我要耍朋友");
}
Person p2 = new Person();
p2.name = "火山哥";
p2.age = 16;
p1.AddFriend(p2);//p1添加新朋友p2
//遍历p1朋友数组 输出p1所有朋友的名字
for (int i = 0; i < p1.friends.Length; i++)
{
Console.WriteLine(p1.friends[i].name);//火山哥
}
#endregion
}
}
//总结
//成员方法
//描述行为
//类中申明
//任意数量
//返回值和参数根据需求决定
}
5.3 练习题
基于成员变量练习题,为人类定义说话、走路、吃饭等方法
class语句块外 namespace语句块内
// class语句块外 namespace语句块内
//声明人类
class Person
{
//成员变量
public string name;
public float height;
public int age;
public string homeAddress;
//成员方法
public void Speak(string str)
{
Console.WriteLine("{0}说{1}", name, str);
}
public void Walk()
{
Console.WriteLine("{0}开始走路了", name);
}
public void Eat(Food f)
{
Console.WriteLine("{0}吃了{1}", name, f.name);
}
}
基于成员变量练习题,为学生类定义学习、吃饭等方法
class语句块外 namespace语句块内
// class语句块外 namespace语句块内
//声明学生类
class Student
{
//成员变量
public string name;
public int number;
public int age;
public Student deskmate;
//成员方法
public void Learn()
{
Console.WriteLine("{0}在学习", name);
}
public void Eat(Food f)
{
Console.WriteLine("{0}开始吃{1}", name, f.name);
}
}
定义一个食物类,有名称,热量等特征,思考如何和人类以及学生类联系起来
class语句块外 namespace语句块内
// class语句块外 namespace语句块内
//声明食物类
class Food
{
//成员变量
public string name;
public int kaLuli;
//成员方法
//吃食物不同参数的成员方法重载
public void BeiEat(Person p)
{
Console.WriteLine("{0}吃了{1}", p.name, name);
}
public void BeiEat(Student s)
{
Console.WriteLine("{0}吃了{1}", s.name, name);
}
}
主函数内
// 主函数内
Person p = new Person();
p.name = "林文韬";
Student s = new Student();
s.name = "小火";
Food f = new Food();
f.name = "火龙果";
p.Eat(f); // 林文韬吃了火龙果
s.Eat(f); // 小火开始吃火龙果
f.BeiEat(p); // 林文韬吃了火龙果
f.BeiEat(s); // 小火吃了火龙果
5.4 练习题代码
using System;
namespace Lesson3_练习题
{
#region 练习题一
//基于成员变量练习题
//为人类定义说话、走路、吃饭等方法
//class语句块外 namespace语句块内
//声明 人 类
class Person
{
//成员变量
public string name;
public float height;
public int age;
public string homeAddress;
//成员方法
public void Speak(string str)
{
Console.WriteLine("{0}说{1}", name, str);
}
public void Walk()
{
Console.WriteLine("{0}开始走路了", name);
}
public void Eat( Food f )
{
Console.WriteLine("{0}吃了{1}", name, f.name);
}
}
#endregion
#region 练习题二
//基于成员变量练习题
//为学生类定义学习、吃饭等方法
//class语句块外 namespace语句块内
//声明 学生 类
class Student
{
//成员变量
public string name;
public int number;
public int age;
public Student deskmate;
//成员方法
public void Learn()
{
Console.WriteLine("{0}在学习", name);
}
public void Eat(Food f)
{
Console.WriteLine("{0}开始吃{1}", name, f.name);
}
}
#endregion
#region 练习题三
//定义一个食物类,有名称,热量等特征
//思考如何和人类以及学生类联系起来
//class语句块外 namespace语句块内
//声明 食物 类
class Food
{
//成员变量
public string name;
public int kaLuli;
//成员方法
//吃食物不同参数的成员方法重载
public void BeiEat(Person p)
{
Console.WriteLine("{0}吃了{1}", p.name, name);
}
public void BeiEat(Student s)
{
Console.WriteLine("{0}吃了{1}", s.name, name);
}
}
#endregion
class Program
{
static void Main(string[] args)
{
Console.WriteLine("成员方法练习题");
#region 练习题三
//主函数内
Person p = new Person();
p.name = "林文韬";
Student s = new Student();
s.name = "小火";
Food f = new Food();
f.name = "火龙果";
p.Eat(f);//林文韬吃了火龙果
s.Eat(f);//小火开始吃火龙果
f.BeiEat(p);//林文韬吃了火龙果
f.BeiEat(s);//小火吃了火龙果
#endregion
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com