• 20131117-练习面向对象


    [1] //1.请将字符串数组{ "中国", "美国", "巴西", "澳大利亚", "加拿大" }中的内容反转。然后输出反转后的数组。不能用数组的Reverse()方法。

    string[] strArray = { "中国", "美国", "巴西", "澳大利亚", "加拿大" };

    string temp = "";

    for (int i = 0; i < strArray.Length/2; i++)

    {

    temp = strArray[i];

    strArray[i] = strArray[strArray.Length - 1 - i];

    strArray[strArray.Length - 1 - i] = temp;

    }

    foreach (var item in strArray)

    {

    Console.Write(item+" ");

    }

    Console.ReadKey();

     

    [2] //随机生成101-100内的非重复数字放入ArrayList集合中

    ArrayList array = new ArrayList();

    Random r = new Random();

    while (array.Count<10)

    {

    //Random r = new Random();不要放在这

    int num = r.Next(1, 101);

    if (!array.Contains(num))

    {

    array.Add(num);

    }

    }

    foreach (var item in array)

    {

    Console.Write(item+" ");

    }

    Console.ReadKey();

    [3]//遍历窗体控件,给所有的label赋值

    foreach (Control item in this.Controls)

    {

    if (item is Label)//当前的控件是不是label

    {

    item.Text = "";

    }

    }

    [4] public class Student

    {

     

    string _name;

    int _age;

    char _gender;

    public Student() { }

    //类中如果没有写构造函数,则默认有一个无参数的构造函数

    //类中如果写了一个有参数的构造函数,那么此时类中只有一个构造函数,原来无参数的构造函数被干掉了

    public Student(string name, int age, char gender)

    {

    this.Name = name;

    this.Age = age;

    this.Gender = gender;

    }

    public string Name

    {

    get { return _name; }

    set { _name = value; }

     

    }

    public int Age

    {

    get { return _age; }

    set { _age = value; }

    }

    public char Gender

    {

    get { return _gender; }

    set { _gender = value; }

    }

    public void SayHi()

    {

    Console.WriteLine("我是学生");

    }

    }

    [5]猜拳游戏

    [6]封装、继承、多态;字段、属性、索引;访问权限;引用、命名空间;变量作用域

    [*]

     

    [*]

    private :自己类可以访问

    protected :自己类及子类可访问

    internal:本程序集内可访问,本程序集—一个项目即一个程序集

    protected internal:具体情况 具体分析,二者修饰的权限是一个并集不是交集

    ①能被类的子类所访问(不管这个子类在哪个程序集里)

    ②并且能被同一个程序集的类所访问

    public:任何地方皆可访问

    注意:

    类的内部的成员,只要没有访问修饰符,默认就是private。

    类的默认访问权限是internal

    修饰类的访问修饰符只能有两种:public internal。

    [*]基础班相关笔记:

    1、访问修饰符

    public:公开的,公共的,在哪都能访问到

    private:表示私有的,只能在当前类的内部才能够访问到

    internal:只能在当前项目中访问。

     

    2、this:

    1)、代表当前类的对象

    2)、调用当前类的构造函数

     

     

    3、类是不占内存的,而对象是占内存的。

     

    4、静态和非静态的区别

    问:非静态类中,能不能出现静态成员?

    答:在非静态类中,可以出现静态的成员。

     

    静态方法中只能够访问到静态的成员,而不-能访问到非静态的成员。

    在非静态的方法中可以访问到静态的成员。

     

     

    问:在静态类中,能不能够出现非静态成员?

    答:在静态类中不能出现非静态成员。只能有静态成员。

     

    静态成员和非静态成员调用上的区别:

    非静态成员在调用的时候,使用对象.非静态成员();的方式进行调用

    而静态成员在调用的时候,使用类名.静态成员();的方法进行调用

     

    注意:静态类是不允许被实例化的。

     

     

     

    什么时候使用静态类,什么时候使用非静态类。

    1、我们一般把静态类作为一个工具类来使用。Console

    2、静态类的资源在全局中是共享的。

    3、静态类只有在程序结束的时候才释放资源。

     

    5、继承

    继承解决的问题就是减少冗余代码。

     

    Student类和Teacher类继承了Person类,我们管Student类和Teacher类叫做子类,管Person类叫做父类。

    或者 我们管Student类和Teacher类叫做派生类,管person叫做基类。

     

    父类只能使用自己的成员,不能使用子类的成员,而子类既可以使用父类的成员,也可以使用自己的成员。

     

    子类究竟从父类那里继承过来了什么?

     

    子类并没有继承父类的私有字段。【有争议,个人认为继承了,但不能访问。理由:子类继承了父类的属性这是没有争议的,但属性本质上是方法,不存储数据,存储数据的是与属性相关连的字段。合理的设计属性与字段是捆绑存在的。】

    子类也没有继承父类的构造函数。

    子类继承了父类的属性、方法.

     

    子类会默认的调用父类当中那个默认的无参数的构造函数,当咱们在父类中写了新的构造函数之后,

    原来那个默认的无参数的构造函数就被干掉了,此时,子类调不到父类中无参数的构造函数,就报错了。

    解决办法有两个

    1)、在父类中重新添加一个无参数的构造函数

    2)、在子类中显示的去调用父类中的构造函数。:base

     

    单根性:一个类只能有一个父类。

    传递性:

     

     

     

    6、里氏转换

    1)、子类可以赋值给父类,如果有一个地方,需要一个父类类型的参数,那么你可以给一个子类类型的参数

    2)、如果父类中装的是子类对象,那么可以,将这个父类强转为对应的子类对象。

     

     

    7、is和as的用法

    is:表示转换,如果能够转换成功,则返回一个true,否则返回一个false。

    as: 表示转换,如果转换成功,则返回对应的对象,否则返回一个null。

     

     

    [7] //索引

    public class Person

    {

    public string this[int index]

    {

    get

    {

    string str = "";

    switch (index)

    {

    case 0: str = this._name; break;

    case 1: str = this._age.ToString(); break;

    case 2: str = this._gender.ToString(); break;

    }

    return str;

    }

    }

     

    string _name;

     

    public string Name

    {

    get { return _name; }

    set { _name = value; }

    }

    int _age;

     

    public int Age

    {

    get { return _age; }

    set { _age = value; }

    }

    char _gender;

     

    public char Gender

    {

    get { return _gender; }

    set { _gender = value; }

    }

    }

    [8继承案例]

    namespace _13继承案例

    {

    public class Person

    {

     

    public Person(string name,int age,char gender)

    {

    this._name = name;

    this._age = age;

    this._gender = gender;

    }

    public Person(string name):this(name,0,'')

    {

    // this._name = name;

    }

    public Person(string name,int age):this(name,age,'')

    { }

    public Person()

    { }

     

    protected string _name;

    //如果字段的前面修饰符是protected ,本类中,子类中都可以访问

    public string Name

    {

    get { return _name; }

    set { _name = value; }

    }

    char _gender;

     

    public char Gender

    {

    get { return _gender; }

    set { _gender = value; }

    }

    int _age;

     

    public int Age

    {

    get { return _age; }

    set { _age = value; }

    }

    public virtual void SayHello()

    {

    Console.WriteLine("我叫==================={0}", this.Name);

    // Console.WriteLine();

    }

    }

    }

    namespace _13继承案例

    {

    public class Student:Person

    {

     

    public Student(string name,int age,char gender,double score):base(name,age,gender)

    {

    this._score = score;

    }

    double _score;

     

    public double Score

    {

    get { return _score; }

    set { _score = value; }

    }

     

    }

    }

    namespace _13继承案例

    {

    class Teacher:Person

    {

    public Teacher(string name,int age,char gender,double salary):base(name,age,gender)

    {

    this._salary = salary;

     

    }

     

    double _salary;

     

    public double Salary

    {

    get { return _salary; }

    set { _salary = value; }

    }

    public void SayHello()

    {

    this.SayHello();

    Console.WriteLine("这里是子类");

    //Console.WriteLine("我是子类,老师{0}",this.Name);//

    //base.SayHello();

    }

    }

    }

  • 相关阅读:
    Ext.widgetsform(上)BasicForm/Field/Checkbox/Radio/HtmlEditor/TextField
    EXT核心API详解(二)Array/Date/Function/Number/String
    Think of Ext2.0
    EXT核心API详解(七)Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
    Ext架构分析(2)理解Ext.util.Observable
    Ext.dataStore
    Ext架构分析(1)理解Ext.util.Event
    Spket Eclipse插件使用教程
    Ext.widgetsform(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
    Ext.menu.Menu
  • 原文地址:https://www.cnblogs.com/CharlesZHENG/p/3527508.html
Copyright © 2020-2023  润新知