20141214--C#父类,子类
首要:
子类 包含父类的所有的属性方法
所有子类都可以直接转化成父类类型
当父类类型变量里面存的是某个子类的对象的时候,才能转化成那个子类类型。
父类与子类的装换:
- 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#父类,子类的更多相关文章
- Java父类子类的对象初始化过程
摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和 ...
- C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象
C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式 备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提. 2.子类继承父 ...
- java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序
java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_Stat ...
- 【java】学习路线6-静态方法、私有化方法、父类子类
import java.util.Arrays; /* 我们可以自己创建方法(静态) 私有化方法,阻止他人实例化该方法 静态代码块只执行一次,只在加载这个所在类的时候执行 父类 - 子类 子类继承自父 ...
- 静态(static)代码块、构造代码块、构造函数、父类子类执行顺序
静态代码块:static修饰的代码块. 在类加载-初始化的时候进行,主要目的是给变量赋予初始值 构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块. java会把构造代码块放到 ...
- Java基础-父类-子类执行顺序
代码解析 子类 package com; /** * 子类 * @author huage * */ public class Test extends Test1{ public static vo ...
- C#父类子类对象关系
案例: 主要有Vehicle.cs Airplane.cs Car.cs 3个类. Car和Airplane都继承与Vehicle类.Vehicle中Drive为虚方法,可在子类中重写,父类引 ...
- public、protect、private在父类子类中使用
先贴出一张,直观的.估计大家都见过的关于public.protect.private的范围图 作用域 当前类 同一package 子孙类 其他package public T ...
- php 父类子类构造函数注意事项
网上流传的2点: PHP的构造函数继承必须满足以下条件: 当父类有构造函数的声明时,子类也必须有声明,否则会出错. 在执行父类的构造函数时,必须在子类中引用parent关键字. 第1点不需要. 第二个 ...
- php trait 变量类型为数组时 不能被父类子类同时use
直接上代码 --------------------------- trait T1 { public static $a=1; public static $b= []; public static ...
随机推荐
- Android中显示网页的多种方式
在android中显示页面主要有两种方式,一种是在Activity里面直接显示网页,另一种是调用浏览器显示网页.方式不同,使用的方法也不同,下面我们分别讲解. 一.在Activity里面直接显示网页 ...
- 【原创】AltiumDesigner 6 的自定义菜单
AltiumDesigner 6 的自定义菜单,数据保存在DXP.RCS文件中通过测试,添加一个自定义菜单名为HHH,然后用Editplus在C:\Users\pcittsy\AppData\Roam ...
- [转]SQL快速入门
原文出处:http://blog.csdn.net/xxd851116/article/details/5688263 一.基础 1.说明:创建数据库CREATE DATABASE database- ...
- LeetCode22 Generate Parentheses
题意: iven n pairs of parentheses, write a function to generate all combinations of well-formed parent ...
- solr默认查询设置
在搜索过程中,如果我们每次请求中都传入很多固定的参数,会很繁琐,这里再solrconfig.xml中初始化定义一些不经常改动的搜索参数: <requestHandler name="/ ...
- 使用HttpURLConnection和AsyncTask从网络缓存图片
1.创建NetCacheUtils中创建downloadBitmap(String url)方法 private Bitmap downloadBitmap(String url){ HttpURLC ...
- [经典算法] 排列组合-N元素集合的所有子集(一)
题目说明: 给定一组数字或符号,产生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合为:{}.{1}.{1,2}.{1,2,3}.{1,3}.{2}.{2,3}.{3}. 题目解析: 如 ...
- iOS - UI - UIStepper
7.UIStepper //计数器控件 固定宽高 UIStepper * stepper = [[UIStepper alloc] initWithFrame:CGRectMake(100, 10 ...
- 在CentOS下安装配置MySQL
经常需要在linux环境下部署项目或安装Mysql数据库,由于记性不好,每次都是求助度娘,每次搜到的步骤都不一样,所以每次都在尝试.冒险:于是乎,把安装的重要步骤贴出,供自己以后参照. 1.首先要看看 ...
- Android渠道汇总
序号 渠道名 渠道说明 特殊渠道 1 googleplay google市场 2 umeng 自动更新 3 office_web 官方网络 4 office_qrcode 官方二维码 硬件 ...