内存介绍 - 继承

内存:


  虚拟内存总体划分为五大区域,栈区(堆栈),堆区(托管堆),常量,静态(静态未初始化和静态初始化),其他区域
  
  栈区:由计算机虚拟内存自动进行释放管理,栈区的存储方式为先进后出,用于分配类型,栈由操作系统进行管理
  不受GC(垃圾回收机制)管理,当值类型不在其作用域,其所在的内存空间自动释放,栈的执行效率为最高
  
  堆区:用于分配小对象实例(85000),所谓小对象就是小于85000字节的实例对象。GC堆分三代垃圾管理进行管理
  当GC操作时(垃圾回收的时候),垃圾收集器会对GC堆进行压缩回收,原理有点类似IOS中的autorelease(自动释放池)
  
  大对象区:(large object heap):大对象就是指大小超过85000字节的实例对象。大对象分配在LOH上不受GC管理,
  不会被压缩,只有在完成GC回收时才会被回收
  
  ps:
  栈的分配是高位-->低位进行扩展
  堆的分配是低位-->高位进行扩展
  
  值类型参数与引用参数的本质,值类型是对栈中数据进行拷贝,拷贝出来的数据相当于之前数据的副本,引用类型是对栈中数据
  地址的引用,当值参数为某对象引用时,可以改变该对象的某些值,但是不能将值编程新对象的地址




  
    继承:


    继承使用条件:当你在设计类的时候,发现有字段重复.
               具有相同特征不同行为的可以抽取出来,单独称为一个类,这个类供派生类使用.
               简称:基类.
  
    在现实生活中继承的关系有很多
    1.儿子继承父亲
    2.黄焖鸡米饭
    ....
    
    在程序中使用关键符号:表示继承
    格式: ( : + 类)
    这个类是指继承的类
    
  
    继承关系中的特点:
    1.子类可以继承父类中的公有字段
    2.子类可以继承父类中的公开属性
    3.子类可以继承父类中的公开方法
    4.父类不能拥有子类的字段/方法/属性/索引器
    5.在c#中不支持多重继承,也就是说一个类只能继承一个类.
      如果你想支持多继承,那么请使用Interface
    
  
    继承关系中的构造函数(重点)
    1.在继承关系中,首先会调用父类的构造函数,然后再调用子类的构造函数
    2.在继承关系中,子类初始化对象的时候,先调用父类的构造函数,然后再看子类构造函数有没有显式
      通知编译器指定调用父类的哪个构造函数,如果没有,那么默认去调用父类的无参数构造函数.
      此时如果父类重写了带有参数的构造函数,程序编译不通过.那么解决办法就是给父类添加无参构造函数
      或者在子类构造函数中声明指定调用父类的哪个构造函数.
      
    this 当前类的实例
   base 基类(父类对象)

 

using System;

namespace OOPExtend
{
	public class Hero
	{
		//字段
		public string hero_Name;
		public string hero_Ding;
		public string hero_Te;
		public string hero_Ext;
		public string hero_Live;
		public string hero_Hurt;
		public string hero_Effect;
		//私有字段
		private string _hero_Operation;

		//属性
		public string HeroOperation
		{
			set{
				Console.WriteLine (value);
				_hero_Operation = value;
			}
			get{
				return _hero_Operation;
			}
		}

		//行为
		public void Baoji(){
			Console.WriteLine ("暴击效果!~");
//			Baoji2 ();
		}

		//行为1--私有方法
		private void Baoji2(){
			Console.WriteLine ("暴击效果2!~");
		}
		 
		//构造函数
		public Hero()
		{
//			Console.WriteLine ("父类中的构造函数!");
		}

		//构造函数2
		public Hero(string name,string ding){
			Console.WriteLine ("父类中的构造函数2!");
			this.hero_Name = name;
			Console.WriteLine ("ding的值{0}",ding);
			this.hero_Ding = ding;
		}


			
	}

	class Hero_Monkey:Hero
	{

		public string age;

		public Hero_Monkey(string age)
		{
			this.age = age;
		}

		public Hero_Monkey(string name,string ding,string age):base(name,ding)
		{
			this.age = age;

		}

		public static void Main(){

			Hero_Monkey hm = new Hero_Monkey ("18","男","99");
			Console.WriteLine (hm.age);

//			Hero_Monkey hm2 = new Hero_Monkey ("99");
//			Console.WriteLine (hm2.age);

//			hm.HeroOperation = "你好";
//			Console.WriteLine (hm.HeroOperation);
//			hm.Baoji ();


//			Hero h = new Hero ("19","李");
//			Console.WriteLine (h.hero_Ding);



		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值