学习日志(十六)
面向对象概述:
三大特性:
1.封装:用程序语言来形容对象
2.继承:复用封装对象的代码
3.多态:同样行为的不同表现
类和对象
1.类的概念
○具有相同特征和行为的一类事物的抽象
○类是对象的模板
○可以通过类创建出对象
○类的关键词是class
2.类和结构体的区别
结构体是值类型,而类则是引用类型
结构体使用栈存储,而类使用堆存储
结构体成员不能继承自其他类或结构体,也不能被其他类或结构体继承(即不具有继承的多态性),而类可以
结构体成员变量不能在声明时赋值初始值,而类可以
结构体没有默认的构造函数,添加构造函数时不能定义无参构造函数,只能定义带参构造函数;类有默认的构造函数,可以自定义无参构造函数或者带参构造函数
类是反映现实事物的一种抽象,而结构体只是包含了不同类别数据的一种包装
3.类声明的位置:
namespace语句块中
class语句块中(内部类)
4.类声明的语法
class 类名
{
//特征﹣变量成员
//行为﹣方法成员
//保护特征﹣成员属性
//构造函数和析构函数
//索引器
//运算符重载
//静态成员
class Person
{
}
// 实例化对象的形式与内存空间的关系
//没有分配堆内存,只是在栈中开辟了内存空间用于储存堆内存的地址,但地址为nu11
Person p0;
person p1 = null;
//分配了堆内存,栈中的地址不为nu11
Person p2 = new Person();
类的构造函数
1.概念
在实例化对象时会调用的用于初始化的函数
如果不写,默认存在一个无参构造函数
2.特性
普通构造函数在new一个新对象的时候会被调用
没有返回值
函数名和类名相同
没有特殊需求时一般都用public访问修饰符修饰
类的构造函数可以重载
如果自定义了带参的构造函数,则会失去默认的无参构造函数(可理解为被顶替了)
class Person
{
//变量成员
public string name;
public int age;
public float money;
//自定义构造函数可以重载
public Person(){
name="Jack";
age=18;
}
public Person(string name, int age){
this.name= name;
this.age=age;
}
}
构造函数的特殊写法:关键字this
后面加":this()"可以调用其他的同名重载构造函数,"()"内可以加变量