C#笔记(4)---面向对象--类与继承

原创 2005年05月06日 22:25:00
通过一个实际例子,。


        public class  Authenticator
        
{
        
/* MinPasswordLenth为静态字段或静态数据 ,本字段只存储一次(有关键字static)
           Password为实例字段或实例数据,创建多少该类的实例,本字段就存储几次(无关键字static)
            另一个重要区别,静态字段属于类,实例字段属于对象
        
*/

            
private static uint MinPasswordLenth=6//静态字段
            private string Password;//实例字段

            
/*无论实例方法还是静态方法,只存储一次,并与类相关.
             实例方法会利用一个隐式的外部参数(this),该参数引用相关类实例所在的内存。
             绝对不能显式这个外部参数,但它总是存在的。
             要访问实例字段,则不要加static.下面没使用static故可以访问Password实例字段!
             
*/


            
public bool IsPasswordCorrect(string password)
            
{
              
return (password==Password)?true:false;
            }

            
public  bool ChangePassword(string oldpassword,string newpassword)
            
{
                
if(oldpassword==Password)
                
{
                    Password
=newpassword;
                    
return true;
                }

                
else{return false;}
            }

            
/*静态方法,属于类而不是对象调用时直接用 [类.静态方法],标志是:static
             静态方法是不可以访问类的实例数据的,
             如:方法GetMinPasswordLength 是不可以访问实例字段 Password的
             
*/
 //[属性MinPasswordLenth的获取与设置]
            public static uint GetMinPasswordLength()
            
{
             
return MinPasswordLenth;
            }

            
public static void SetMinPasswordLength(uint value)
            
{
                MinPasswordLenth
=value;
            }

            
// 属性最好如下这样做[虽然与上面写两个方法的功能是一样],还比较符合常规:
            
//定义属性,get与set存取器
            public static uint MinLenth
            
{
            
/*注意:这里属性是静态的,一般是不必要的。同方法一样,只有属性指向静态数据时。
              才必须把属性声明为static,大多情况没这个必要。可以只有get或者只有set部分,但
              不建议这样!
             
*/

                
get
                
{
                  
return MinPasswordLenth;
                }

                
set
                
{
                 MinPasswordLenth
=value;
                }

             }

        }


引用类型和值类型
把一个变量声明为基本的预定义类型时,例如int,uint,double,float和bool等,就实例化了
一个值类型的变量。每个变量都包含它自己的数据副本。
如: int i=10;
     int j,k;
     j=i;
     k=10;  //此时均为10
     ++j;  //此时只有j为11,i,k仍旧为10

#类都是引用类型的,这样每个变量都只包含存储类实例的内存的引用,而不是创建这个实例
 的实际数据的引用。这是实例化类时为什么使用new运算符的原因。
 如: authenticator User1;
      authenticator User2=new authenticator();
      authenticator User3=new authenticator();
      User1=User2;
      User2.SetPassword(null,"abc");
      User3.SetPassword(null,"abc");
      if(User2==User3) //虽然具有相同的新密码,但返回false,执行else部分。
      {.........}
      else
      {.........}
      if(User1==User2)//返回true,因为User1与User2指向内存中相同的地址。
      {.........}
      else
      {.........}

C#面向对象设计模式纵横谈 学习笔记4 Builder 生成器(创建型模式)

这一讲的内容是Builder生成器模式 先看看Builder模式的动机 在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂...

黑马程序员—4—Java基础: 面向对象继承学习笔记和学习心得体会

1.       继承概述   1.提高啦嗲吗的复用性。   2.让类与类之间产生啦关系,有了这个关系,才有了多态的特性。   注意:千万不要为了获取其它类的功能,简化代码而继承         必须...

【effective c++读书笔记】【第6章】继承与面向对象设计(4)

条款39:明智而审慎的使用private继承 1、如果classes之间的继承关系是private,编译器不会自动将一个derived class对象转换为一个base class对象。 例子: ...

黑马程序员_学习笔记:4) 面向对象2:继承、this、super、finally、Abstract、模板设计模式、接口

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------    继 承(面向对象特征之一) 好...
  • awangk2
  • awangk2
  • 2014年04月28日 15:15
  • 238

黑马程序员-Java基础知识4,(部分笔记总结面向对象-类)

1类 1)是同类型东西的概念,是对现实生活中事物的描述,映射到Java中描述就是class定义的类。类是对象的模板、图纸,是对象的数据结构定义。简单说就是“名词”。 2)其实定义类,就是在描述事物...

Java SE 自学笔记4 之面向对象的类

Java 面向对象 1.Java程序中,类是程序的最小单位,所有的Java程序都必须从类定义开始 2.类的定义  [修饰符] class 类名 { //0~N个Fie...

C#面向对象笔记

  • 2017年03月14日 16:33
  • 28KB
  • 下载

【黑马程序员】4.C#面向对象之类和构造函数

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 一、     类 1、     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#笔记(4)---面向对象--类与继承
举报原因:
原因补充:

(最多只允许输入30个字)