首要:

子类 包含父类的所有的属性方法
所有子类都可以直接转化成父类类型
当父类类型变量里面存的是某个子类的对象的时候,才能转化成那个子类类型。

父类与子类的装换:

Ren r = new Ren();
r = (Ren)m;//Man子类转换为Ren父类
Ren m1 = new Ren();
m1 = (Man)r;//转换成父类后再转换为子类时,只能转换成原先的子类, 不能转换成其他子类

需要使用强制装换。

private与protected:

private 只可在当前类中作为成员变量使用 。

protected 只可在当前类中或子类中作为成员变量 使用。

当初始化子类的时候,都会先初始化一下父类,并且,执行父类中的构造函数。

在父类中写入:

       private int hello;//private  只能在自己类里作为成员变量使用
protected int world;//protected 只能在自己的类 以及子类里 作为成员变量使用
public Ren()//构造函数(先执行)
{
world += ;
hello = ;
}
public void ren1()
{
Console.WriteLine(world);
}

在一个子类中:

class Man : Ren//加上“:Ren” 子类,表示Man是Ren的子类。
{
public Man()
{
world += ; //在子类中可以使用protected的 变量。不可使用 private的变量。
}
public void man1()
{
Console.WriteLine(world);
}
}

在另一个子类中:

class women : Ren//加上“:Ren” 子类,表示women是Ren的子类。
{
public women()
{
world += ;
}
public void women1()
{
Console.WriteLine(world);
}
}

主函数

static void Main(string[] args)
{//子类 包含父类的所有的属性方法
//所有子类都可以直接转化成父类类型
//当父类类型变量里面存的是某个子类的对象的时候,才能转化成那个子类类型。
Ren rr = new Ren();
rr.ren1();//打印结果是10 Man m=new Man();
m.man1();//打印结果是15 women w = new women();
w.women1();//打印结果是17 Console.ReadLine();
}

当在父类中加入 static时

      private int hello;//private  只能在自己类里作为成员变量使用
protected static int world;//protected 只能在自己的类 以及子类里 作为成员变量使用
//注意此处,与上文不同,添加了一个static 静态变量(受保护)
public Ren()//构造函数(先执行)
{
world += ;
hello = ;
}
public void ren1()
{
Console.WriteLine(world);
}

输出结果:

            Ren rr = new Ren();
rr.ren1();//打印结果是10 Man m=new Man();
m.man1();//打印结果是25 women w = new women();
w.women1();//打印结果是42

其原理:

每次初始化(new)的时候被保护的变量都不会改变。

10+15=25;(第一个10是初始化Ren时的改变)

25+17=42;(25是初始化Man时的改变)

父类与子类的方法调用:

当子类父类中各有一个同名的方法时,new的是谁就调用谁的方法。

父类:

public void shuohua()
{
Console.WriteLine("说话:");
}

Man子类:

public void shuohua()
{
Console.WriteLine("会英语");
}

注意两个是同名的方法。

主函数中:

           m.shuohua();//调用的是Man中的方法    打印结果: 会英语
rr.shuohua();//调用的是Ren中的方法 打印结果: 说话: rr = (Ren)m;//把Man类的m强制转换成Ren类。
rr.shuohua();//调用的是Ren中的方法 打印结果: 说话: m = (Man)rr;//把Ren类rr强制转换成Man类。
m.shuohua();//调用的是Man中的方法 打印结果: 会英语

20141214--C#父类,子类的更多相关文章

  1. Java父类子类的对象初始化过程

    摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和 ...

  2. C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象

    C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式   备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提.     2.子类继承父 ...

  3. java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序

    java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_Stat ...

  4. 【java】学习路线6-静态方法、私有化方法、父类子类

    import java.util.Arrays; /* 我们可以自己创建方法(静态) 私有化方法,阻止他人实例化该方法 静态代码块只执行一次,只在加载这个所在类的时候执行 父类 - 子类 子类继承自父 ...

  5. 静态(static)代码块、构造代码块、构造函数、父类子类执行顺序

    静态代码块:static修饰的代码块. 在类加载-初始化的时候进行,主要目的是给变量赋予初始值 构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块. java会把构造代码块放到 ...

  6. Java基础-父类-子类执行顺序

    代码解析 子类 package com; /** * 子类 * @author huage * */ public class Test extends Test1{ public static vo ...

  7. C#父类子类对象关系

    案例: 主要有Vehicle.cs  Airplane.cs   Car.cs  3个类. Car和Airplane都继承与Vehicle类.Vehicle中Drive为虚方法,可在子类中重写,父类引 ...

  8. public、protect、private在父类子类中使用

    先贴出一张,直观的.估计大家都见过的关于public.protect.private的范围图 作用域 当前类 同一package 子孙类 其他package public     T         ...

  9. php 父类子类构造函数注意事项

    网上流传的2点: PHP的构造函数继承必须满足以下条件: 当父类有构造函数的声明时,子类也必须有声明,否则会出错. 在执行父类的构造函数时,必须在子类中引用parent关键字. 第1点不需要. 第二个 ...

  10. php trait 变量类型为数组时 不能被父类子类同时use

    直接上代码 --------------------------- trait T1 { public static $a=1; public static $b= []; public static ...

随机推荐

  1. C++ CopyFile

    复制文件 关键点 CopyFile The CopyFile function copies an existing file to a new file. The CopyFileEx functi ...

  2. iOS开发——多线程OC篇&多线程总结

    多线程总结 //1.NSThread /** 优点:NSThread 比其他两个轻量级. 缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销. cocoa给我提供了两 ...

  3. Web service是什么?(转)

    我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web service到 ...

  4. stm32f107vc在IAR环境下,引用库函数的工程文件的配置方法

    stm32做开发很方便的一个原因是大家可以稍稍放松对于硬件寄存器等的设置,因为stm32有了非常丰富和实用的库函数,外设文件等等,所以我们在使用的时候可以更加关注程序开发的过程和逻辑关系.但是,在开发 ...

  5. IIS问题汇总

    1.问题描述   VS和Framework的安装顺序不对导致网站打不开   原因分析   Framework出现问题   解决办法   重新注册Framework版本   a.开始->运行-&g ...

  6. 项目源码--Android聚合视频类播放器

    下载源码 技术要点:  1.高效支持主流的视音频格式 2.本地视频的播放与管理 3.聚合电视在线直播 4.聚合优酷.搜狐.乐视.爱奇艺等多种在线视频 5.优质播放,包含播放.暂停,声音.亮度调整等功能 ...

  7. 倒数计数器-CountDownLatch

    最近写一个多线程程序,老是MAIN方法执行完了子线程还没执行完(不知道以前怎么玩儿的),得不到最终结果,于是找到了CountDownLatch CountDownLatch是一个同步辅助类,java. ...

  8. 1.4.10 Schemaless模式

    Schemaless模式 schemaless模式是一组solr功能的集合,允许用户通过简单的索引例子数据快速构建一个有效的schema,而不需要手动的编辑schema.这些solr功能都是在solr ...

  9. ReentrantLock类的基本结构

    ReentrantLock类是一个可重入互斥锁,它具有与使用synchronized()方法和语句访问隐式监视器锁相同的基本行为和语义,但是它的功能更强大.ReentrantLock由最近成功获得锁但 ...

  10. 《算法导论》习题解答 Chapter 22.1-5(求平方图)

    一.邻接矩阵实现 思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可: 伪代码: for i=1 to n for j=1 to n for k=1 to n resul ...