黑马程序员————类
来源:互联网 发布: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培训、期待与您交流! ----------------------
- 黑马程序员—File类
- 黑马程序员—String类
- 黑马程序员—其他类
- 黑马程序员—System类
- 黑马程序员—枚举类
- 黑马程序员—File类
- 黑马程序员—抽象类
- 黑马程序员—其他类
- 黑马程序员—泛型
- 黑马程序员—多线程
- 黑马程序员—DOM
- 黑马程序员—javabean
- 黑马程序员—xml
- 黑马程序员—多线程
- 黑马程序员—反射
- 黑马程序员—多线程
- 黑马程序员—HTML
- 黑马程序员—反射
- 不登录 直接查看EWORKS 文章
- java里面的树型结构
- node-sqlite3源码分析 - 准备知识 - sqlite3 API使用说明
- vmware虚拟机网络连接
- oracle时间函数
- 黑马程序员————类
- Find char sequence consists of same chars but in different order
- hdu 1885 Key Task(bfs+状态压缩)
- java里面的树型的使用
- IOS 登录验证实现
- DataTable 转 JSON格式
- 《启示录》读书笔记系列--笔记十八
- ByteUtil基本操作
- ubuntu 初始要做的