黑马程序员————类

来源:互联网 发布:java应用软件开发 编辑:程序博客网 时间:2024/04/28 15:04

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

 

类的声明:

使用class关键字来定义类:

[访问修饰符] class 类名

{

成员;

......

}

在默认情况下,类声明为内部的,即只有当前项目中的代码才能访问它。可以用internal访问修饰符关键字显式指定:

internal class MyClass

{

成员;

......

}

另外,还可以指定类是公共的,应可以由其他项目中的代码来访问。为此,要使用关键字public。

public class MyClass

{

成员;

......

}

类成员:

(1)字段:它可以是任何类型,用来保存数据,可读可写。

字段的声明:

类型   字段名称;

注:

如果字段没有初始化,字段的值会被设为默认值。每种类型的默认值是0,bool型的默认值是false,引用类型的默认值是null。

(2)方法。

对象初始化:

类名   对象名=new  类名();

注:

new的作用:

(1)在内存中开辟空间。

(2)在开辟的空间中创建对象。

(3)调用对象的构造函数。

访问修饰符:

public:公有访问,不受任何限制。

private:私有访问,只限于本类成员访问,子类,实例都不能访问。

protected:保护访问,只限于本类和子类访问,实力不能访问。

internal:内部访问,只限于本项目内访问,其他不能访问。

protected internal:内部保护访问,只限于本项目或者子类访问,其他不能访问。

静态与非静态的区别:

(1)非静态方法中能访问静态成员。

(2)静态方法中不能访问到非静态的成员,只能访问静态成员

(3)在非静态类中,可以有静态成员 也可以有非静态成员

(4)在静态类中,不允许出现非静态成员

调用:非静态类 使用的时候,需要创建该类的对象,用对象名.成员名的方式调用。

调用静态成员的时候,需要类名.成员名();

属性:

属性是代表类的实力或类中的一个数据项的成员。

属性的特征:

它是命名的类成员,有类型,可以被复制和读取。但是,它不为数据存储分配内存。它有一组两个匹配的成为访问器的方法(set访问器由于赋值,get访问器用于获取值)。

构造函数:

(1)构造函数用于初始化类实力的状态。

(2)构造函数的名称和类名相同。

(3)构造函数不能有返回值,不写void。

例如:

//        写一个Ticket类,有一个距离属性,不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算价格Price (1元/公里):            //0-100公里        票价不打折            //101-200公里    总额打9.5折            //201-300公里    总额打9折            //300公里以上    总额打8折            //有一个方法,可以显示这张票的信息.            Ticket t = new Ticket(150.3);            t.ShowTiecket();            Console.ReadKey();

 

public class Ticket    {                   double _distance;        public double Distance        {            get { return _distance; }            set { _distance = value; }        }        double _price;        public double Price        {            get {                if (_distance > 0 && _distance < 100)                {                    return _distance * 1.0;                }                else if (_distance >= 100 && _distance < 200)                {                    return _distance * 0.95;                }                else if (_distance >= 200 && _distance < 300)                {                    return _distance * 0.9;                }                else                {                    return _distance * 0.8;                }            }        }        public Ticket(double distance)        {            if (distance < 0)            {                distance = 0;            }            this.Distance = distance;        }        public void ShowTiecket()        {            Console.WriteLine("{0}公里是{1}元",this.Distance,this.Price);        }    }

 

类的继承:

(1)可以使用一个已经存在的类作为新类的基础,已存在的类称为基类,新类称为派生类。派生类的成员组成为:自己声明中的成员和基类的成员。

(2)要声明派生类,需在类名后加入:和基类的类名。

(3)派生类不能删除他所继承的任何成员。

注:所有类都派生自object类。

隐藏基类的成员:

(1)要隐藏一个继承的数据成员,需要声明一个新的相同的类型的成员,并使用相同的名称。

(2)要让编译器知道是故意隐藏继承的成员,使用new修饰符。

类的多态:

(1)虚方法:

将父类中的方法前标记为virtual 表示父类这个方法是虚方法  在子类的方法前加override 表示重写父类的方法

例如:

 public class Person    {        public Person(string name)        {            this.Name = name;        }        public string Name        {            get;            set;        }        public virtual void SayHello()        {            Console.WriteLine("我是Person{0}",this.Name);        }    }    public class Chinese : Person    {        public override  void SayHello()        {            Console.WriteLine("我是中国人{0}",this.Name);        }        public Chinese(string name)            : base(name)        {                     }    }


(2)抽象:

public abstract class NoteBook    {        public string Brand        {            get;            set;        }        public abstract void ShowBrand();    }    public class Acer : NoteBook    {        public override void ShowBrand()        {            Console.WriteLine("宏基电脑");        }    }


(3)接口:

接口的声明:

[访问修饰符] interface 接口名

{

接口成员定义;

}

注:

1.类的成员前面如果不加任何访问修饰符 默认是private
2.接口中只能有方法 不能有字段 并且成员前没有访问修饰符 默认就是public

3.接口侧重于一种规范一种能力
4.如果一个类继承了一个接口  那么就必须实现这个接口的成员
5.你写的接口 尽量一个接口中只写一个方法 避免接口感染
6.接口可以多继承

 例如:

public class Person    {        public void CCLSS()        {            Console.WriteLine("我是人类,我可以吃喝拉撒睡");        }    }    public class NBAPlayer    {        public void KouLan()        {            Console.WriteLine("我是NBA球员,我可以扣篮");        }    }    public class Student : Person,IKouLanable    {        public void KouLan()        {            Console.WriteLine("我是学生,我可以扣篮啦");        }        public void Study()        {            Console.WriteLine("我是学生,我会学习");        }    }    public interface IKouLanable    {         void KouLan();    }    public class Teacher : Person, IKouLanable,IFlyable    {        public void KouLan()        {            Console.WriteLine("我是老湿,我也可以扣篮啦");        }        public void Fly()        {            Console.WriteLine("老湿会飞");        }    }    public interface IFlyable    {        void Fly();    }


 

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------