范范(5)

explicit(显)

implicit(隐)

class Celsius
    {
        public float degree;
        public Celsius(float _d)
        {
            degree = _d;
        }
        public static explicit operator Fahrenheit(Celsius c)
        {
           return  new Fahrenheit(c.degree * 9);
        }
    }
    class Fahrenheit
    {
        public float degree;
        public Fahrenheit(float _d)
        {
            degree = _d;
        }
        public  static explicit operator Celsius(Fahrenheit f)
        {
            return new Celsius(f.degree / 4);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Celsius c = new Celsius(16);
            Fahrenheit f = (Fahrenheit)c;
              c = (Celsius)f;
           // Fahrenheit f = c;
          //  c = f;
            Console.WriteLine(c.degree);
            Console.ReadLine();
        }
    }

static:

不用实例化对象就能够使用。

abstract :

1.不能够实例化。

2.默认是virtual 所以不能够申明是virtual或者static。

3.不能够是sealed,由于 sealed不能够被继承。

interface 设计

1.默认public,所以函数不用再申明public。

2.类单继承可是能够非常多interface 。

interface Paint
    {
        void print(int type);    //no public
    }
    class plainPaint : Paint
    {
        public void print(int type)
        {
            Console.WriteLine("printing from a plain text editor");
        }
    }

    class GuiPaint: Paint
    {
        public void print(int type)
        {
            Console.WriteLine("printing from a gui editor");  //different realization
        }

    }
    class Program
    {
        static void print (plainPaint e,int type)         //a good way to call print()
        {
            e.print(type);
        }
        static void Main(string[] args)
        {

            plainPaint i = new plainPaint();
            print(i, 2);
            i.print(2);
            Console.ReadLine();
        }
    }

继承多个interface 的方法一致,但不同实现,就像你的角色有女儿舍友等等,面对不同人的不同反应。

interface EnglishShape
    {
        float getWidth();
        float getHeight();
    }

    interface MetricShape
    {
        float getWidth();
        float getHeight();
    }

    class Box : EnglishShape, MetricShape
    {
       private float width, height;
        public Box(float w,float h)
        {
            width = w;
            height = h;
        }

        float MetricShape.getHeight()
        {
            return height * 2.54f;
        }

        float EnglishShape.getHeight()
        {
            return height;
        }

        float MetricShape.getWidth()
        {
            return width * 2.54f;
        }

        float EnglishShape.getWidth()
        {
            return width;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            Box box = new Box(1, 2);
            EnglishShape enbox = (EnglishShape)box;
            Console.WriteLine(enbox.getHeight());
            MetricShape metribox = (MetricShape)box;
            Console.WriteLine(metribox.getHeight());
            Console.ReadLine();
        }
    }

get set方法能够保护变量,控制他的訪问和读写权,以及写入的可行性。

可是get set仅仅能比(比方这里 AmoutOfWheels)更加保守。

class Vehicle
{
private int amoutOfWheels;

public int AmoutOfWheels
{
get //can protect the amountOfWheels from being read by deletinf it;
{
return amoutOfWheels;
}
set //can protect the am.. from being written;
{
if(value > 0) //can prevent the stupid program to assign a negative value to ammout...;
amoutOfWheels = value;
}
}
}
class Program
{

static void Main(string[] args)
{
Vehicle v = new Vehicle();
v.Amo

时间: 2024-09-29 16:37:09

范范(5)的相关文章

小米范工具系列之十一:小米范渗透测试浏览器

小米范渗透测试浏览器是一款以chrome内核为基础,添加了一些渗透常用功能的浏览器. 主要功能包括: 1.自动修改http头(Host. Referer.Cookie.User-Agent); 2.POST提交. 3.请求拦截.修改. 4.代理快速切换. 5.网页URL提取. 6.端口扫描. 7.目录扫描. 8.basic认证破解. 9.表单认真破解(模拟浏览器操作.可绕过前端js加密.但速度慢.用于少量口令破解). 10.域名反查(调用爱站). 11.二级域名查询(调用netcraft). 1

小米范工具系列之七:小米范 web目录扫描器2.x版本发布

小米范web目录扫描器主要功能是探测web可能存在的目录及文件. 小米范web查找器2.x版本针对1.x版本(参考http://www.cnblogs.com/SEC-fsq/p/5496573.html)做了以下改进: 重新设计了界面,更好用,增加了当前url状态显示. 增加了表格输出,更直观. 对线程池和连接池进行了优化,速度更快. 修复了一些bug. 可随时添加要扫描的url,如果上次任务尚未结束,新任务会放入线程池队列等待执行. 界面如下: 下载地址:http://pan.baidu.c

在C\C++编程时常范的低级错误总结

大学毕业快两年,也当快两年的码农,最近在总结下自己在两年中编程时常范的低级错误. 1.宏里面有return语句 如: #define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RFT_VAL) \ Do{ \ POINTER = new CONSTRUCTOR; \ If(POINTER  ==NULL) \ { \ Return RFT_VAL;\ } \ } 当执行如下语句时: ACE_NEW_RETURN(g_Proctimer,CONSTRUCTOR,RFT_

C++ 宏、范型和RTTI 浅析

[摘要] RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术.现行的C++标准对RTTI已经有了明确的支持.不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现.本文介绍了一些关于RTTI的基础知识及其原理和实现,并分析比较三者是线上的差异与联系. [正文] RTTI 的需求 和很多其他语言一样,C++是一种静态类型语言.其数据类型是在编译期就确定的,不能在运行时更改.然而由于面向对象程序设计中多态性的要求,C++中的指针或引用(Refe

由Cannot create a generic array of ArrayList<xx>引出的学习--Java范型

最近在用Java写某个程序时希望写出一个包括ArrayList<xx>的数组 自己定义如下: ArrayList<edge>[] edges = new ArrayList<edge>()[10]; 然后编译器报错如下: Cannot create a generic array of ArrayList<edge>; 在C++里可以这样比较方便的定义:  vector<edge> a[100]; 在Java里报错,查询了一下,见已经有人在sta

范磊 C++ 第6章 面向对象

1 // section_6.cpp : Defines the entry point for the console application. 2 //范磊C++ 第6章 面向对象 3 4 #include "stdafx.h" 5 #include "iostream" 6 7 8 9 //6.3.7 对象只能调用类中存在的方法(函数) 10 using std :: cout; 11 class Human 12 { 13 public: 14 void w

java genenic 范形

一   为什么要使用范型: 例如:现要设置一个点Point类,有X坐标,Y坐标.要求这个Point的两个属性X,Y可以保存int.float和字符串类型.那么可以做如下设计,X,Y的类型定为Object来实现参数的任意化 class Point { private Object x; private Object y; public Object getX() { return this.x; } public Object getY() { return this.y; } public vo

小米范工具系列之十:小米范SSH批量命令执行工具

小米范SSH批量命令执行工具的主要功能是自动登录多台机器,并执行指定的命令,比如批量抓去shadow.批量获取系统版本等. 界面如下图: 使用方法: 1.输入目标ip.用户名.密码.ssh端口(使用空格或tab键分隔),每行一个目标. 2.设置线程数(如果不设置默认为5). 3.选择输出,默认为右侧输出窗口,可以设置每个ip一个文件,比如抓去shadow,可以把每个ip的执行结果保存到一个txt文件放在当前目录下. 4.点击执行即可. 最新版本下载地址:http://pan.baidu.com/

利用传入的Type类型来调用范型方法的解决方案

起因:自定义一个GridView控件,其数据源来源于一个通用方法Get<T>(),根据你传入的T到数据库中得到相应的数据,问题是定义GridView控件时没法在界面端设置使用泛型,只能在每个使用这个GridView控件时绑定数据.如果你没看懂这个起因也没关系,我们用一段代码来描述一下问题:我希望使用的是从外边传过来的类型tt来调用test1范型方法 class Program     {         static void Main(string[] args)         {