头歌 C# 专题四类与对象

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-1-31

答案在最下面的评论里仅供参考!请勿外传!第3关:private、protected、public、internal的区别任务要求评论28任务描述相关知识publicinternalprivateprotected编程要求测试说明任务描述随着我国国力逐渐强盛,在多个城市中已经搭建了更为方便的公共交通:地铁。搭乘地铁的之前,工作人员会对所有乘客进行安检,除了乘客的提包,而且还要确保乘客没有随身携带危险物品。本关任务:编写一个乘客类,乘客成员属性包括提包和衣物,其中提包对工作人员是可见的,而衣物需要手动安检。相关知识public关键字public是一个成员访问修饰符,表示所修饰的内容是公共的,访问不受限制。例如,我们使用public修饰一个类和该类的成员函数:public class Person{string name;int age;public Person(){name = "Jackie";age = 20;}public void saying(){Console.Writeline("my name is"+name+", my age is"+age);}}那么我们可在别处访问此类,并使用该函数:public class myCaller{public static void Main(string[] args){Person p = new Person();//公共类Person实例化一个对象,调用Person()构造函数初始化p.saying();//对象直接调用saying()函数}}我们在myCaller类中调用Person类,并实例化一个对象,使用该对象的公共方法saying()。需要注意的是,myCaller类和Person类可处在不同的项目中。internal关键字internal所修饰的类,将限制为内部类,即只有当前项目中的代码才能访问它。internal用法如下所示:internal class Person{//类成员}具体实例:namespace J3{//使用internal修饰为内部类internal class Person{string name;int age;public Person(){name = "Jackie";age = 20;}public void saying() {Console.WriteLine("my name is "+name+", my age is "+age);}}public class myCaller {public static void Main(string[] args) {Person p = new Person();p.saying();}}}此段代码中,两个类在同一个namespace中,所以可在第二个类myCaller中调用并实例化类Person。注意,由于internal修饰为内部类,可访问性低于public所修饰的类,之后接触到继承的时候,内部类是无法被公共类所继承的private关键字private将修饰的内容访问限制为私有的。使用方法如下:private <修饰内容>例如我们可用private修饰类成员变量:public class Person{private string name;private int age;//...}当使用private修饰之后,在其他地方便不能直接访问Person类的属性。例如下面的做法编译器将会报错:public class Person{private string name;private int age;//...}public class myCaller{public static void Main(string[] args){Person p = new Person();p.name = "Jackie"; //报错,受保护级别限制}}

相对于private,public修饰限定的成员则可以任意调用,可自行尝试。默认情况下,类成员前的private可省去,例如:public class Person{string name;int age;//...}此时,若没有指定修饰符,默认为private。protected关键字protected所修饰的内容为半公开化,与private基本相似。但当两个类存在继承关系的时候,例如类A继承于类B,那么对于类B则可访问protected修饰的类成员,而不可访问private修饰的类成员。继承将在之后实训学习,此处仅给出一个实例。 具体实例如下:namespace J3{class Person{//使用protected修饰protected string skinColor;public void saying() {Console.WriteLine("my skin color is " + skinColor);}}//WhitePerson类继承Person类class WhitePerson : Person {static void Main(string[] args){WhitePerson wp = new WhitePerson();wp.skinColor = "White";wp.saying();}}}运行结果如下:,继承可理解为将普遍性向特殊性的一种拓展。代码中WhitePerson表示白色人种,具有“人”的所有特性,但从肤色上又与其他人种有所区别。继承用法简单介绍如下:class A : B{//类成员代码};在类A和类B之间添加符号:表示类A继承类B。 所以在类B中可直接访问类A中protected修饰的成员。注:两个类可在不同的项目文件中。相对于private,public修饰限定的成员则可以任意调用,可自行尝试。默认情况下,类成员前的private可省去,例如:public class Person{string name;int age;//...}此时,若没有指定修饰符,默认为private。protected关键字protected所修饰的内容为半公开化,与private基本相似。但当两个类存在继承关系的时候,例如类A继承于类B,那么对于类B则可访问protected修饰的类成员,而不可访问private修饰的类成员。继承将在之后实训学习,此处仅给出一个实例。 具体实例如下:namespace J3{class Person{//使用protected修饰protected string skinColor;public void saying() {Console.WriteLine("my skin color is " + skinColor);}}//WhitePerson类继承Person类class WhitePerson : Person {static void Main(string[] args){WhitePerson wp = new WhitePerson();wp.skinColor = "White";wp.saying();}}}运行结果如下:,继承可理解为将普遍性向特殊性的一种拓展。代码中WhitePerson表示白色人种,具有“人”的所有特性,但从肤色上又与其他人种有所区别。继承用法简单介绍如下:class A : B{//类成员代码};在类A和类B之间添加符号:表示类A继承类B。 所以在类B中可直接访问类A中protected修饰的成员。注:两个类可在不同的项目文件中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace J3
{
/********** Begin *********/
//Passenger类
public class Passenger
{
public bool package;
protected bool clothing;
public Passenger(bool a,bool b)
{
package=a;
clothing=b;
}
public bool getClothing()
{
return clothing;
}
}
/********** End *********/

class Worker
{
public static void Main(string[] args)
{
Passenger p1 = new Passenger(true, true);
Passenger p2 = new Passenger(true, false);

/********** Begin *********/
//使用函数testing查看p1、p2属性值
testing(p1.package);
testing(p1.getClothing());
testing(p2.package);
testing(p2.getClothing());
/********** End *********/

}
//手动检测函数
publi
地板
PPAP哈 2022-9-30
有人吗,,

评论

登录后才可发表内容
  • 主题

    10

  • 帖子

    108

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0948s Mem:2095Kb