1.类与实例
对象是一个自包含的的实体,用一组可识别的特性和行为来标识。一切事物皆为对象,对象就是可以看到、感觉到、听到、触摸到、尝到、或闻到得东西。
类就是具有相同的属性和功能的对象的抽象集合。
public class Cat
{
//声明一内部字段,注意是private,默认叫的次数是3
private int shoutnum = 3;
//ShoutNum属性,注意是public,当中有两个方法
//get表示外界调用是可以得到shoutnum的值
//set表示外界可以给内部的shoutnum赋值
public int ShoutNum
{
get { return shoutnum; }
set { shoutnum = value; }
}
}
上面代码中的private 和public都是修饰符。public 表示所修饰的类成员可以允许其他任何类来访问,俗名公有的。private 表示只允许同一个类中的成员访问,其他类包括他的子类无法访问,俗名私有的。如果类中的成员没有加修饰符,则默认为private。通常字段都是private,属性都是public。通常情况下,属性名称首字母大写,而字段则一般是首字母小写或者前面加‘_’。
属性有两个方法get和set。get访问器返回与声明的属性相同的数据类型,表示的意思是调用是可以得到内部字段的值或者引用;set访问器没有设置参数,用关键词value表示,他的作用是调用属性是可以给内部的字段或引用赋值。
封装
封装是面向对象的三大特性之一。每个对象都包含他能进行操作所需要的所有信息,这个特性成为封装,因为对象不必依赖其他对象来完成自己的操作。
封装的好处:良好的封装能减少耦合;类内部的实现可以自由地修改;类具有清晰的对外接口。
继承
面向对象的第二大特征就是继承。对象的继承代表了一种‘is-a’的关系,如果两个对象A和B,可以描述为‘B是A’,则表明B可以继承A。猫是哺乳动物,就说明了猫与哺乳动物之间的继承和被继承的关系。继承者可以理解为被继承者的特殊化,因为他除了具备被继承者的特性外,还具备自己独有的个性。继承定义了类如何相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有的特性。子类不但继承了父类的所有特性,还可以定义新的特性。
如果子类继承于父类,第一,子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三,子类可以以自己的方式实现父类的功能(方法重写)。
protected表示继承时子类可以对基类有完全访问权。也就是说protected修饰的类成员,对子类公开,但不对其他类公开。子类继承了父类,则基类拥有了父类的除private外的属性和功能。
动物基类:
public class Animal
{
protected string name = "";
public Animal(string name)
{
this.name = name;
}
public Animal()
{
this.name = "无名";
}
protected int shoutNum = 3;
public int ShoutNum
{
get { return shoutNum; }
set { shoutNum = value; }
}
}
猫子类:
public class Cat : Animal
{
public Cat()
: base()
{ }
public Cat(string name)
: base(name)
{ }
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
{
result = result + "嘧,";
}
return "我的名字叫" + name + " " + result;
}
}
狗子类:
public class Dog : Animal
{
public Dog()
: base()
{ }
public Dog(string name)
: base(name)
{ }
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
{
result = result + "汪,";
}
return "我的名字叫" + name + " " + result;
}
}
子类从他的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,他不能被继承,只能被调用。对于调用父类的成员,可以用base关键词。
继承的优点是:继承是所有子类公共部分都放在了父类,使得代码得到共享,这就避免了重复,另外,继承可使得修改和扩展继承而来的实现都比较容易。
继承的缺点是:当父类变,则子类不得不变。继承会破坏包装,父类实现细节暴露给了子类。
分享到:
相关推荐
《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...
文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
读书笔记:《设计模式可复用面向对象软件的基础》学习笔记
《设计模式:可复用面向对象软件的基础》学习笔记
《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...
读书笔记:设计模式学习示例《设计模式——可复用面向对象软件的基础》的读书笔记
本项目是《设计模式:可复用面向对象软件的基础》的学习笔记。 原书采用了 C++ 或 Smalltalk 语言进行代码示例,本项目统一采用 Java 提供丰富的样例。
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...
面向对象编程是Java的核心特性,本学习笔记涵盖了这一主题的深度探索,旨在帮助开发者深入理解并熟练运用面向对象的思想。2023年的版本更新可能包含最新的面试趋势和技术发展。以下将详细介绍Java面向对象编程的一些...
"GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...
设计模式作为软件工程中的一项核心技术,它是一套被广泛认可的用于解决特定问题的最佳实践。...通过阅读这些设计模式学习笔记和研究源码案例,开发者可以更快速地掌握设计模式的实际应用,从而提升开发水平和软件质量。
面向对象设计原则是设计模式的基础,包括开闭原则、迪米特法则、合成复用原则、依赖倒置原则等。开闭原则是说软件实体应当对扩展开放,对修改关闭;迪米特法则(最小知识原则)强调降低类之间的耦合度;合成复用原则...
本文实例讲述了Javascript面向对象程序设计继承用法。分享给大家供大家参考,具体如下: 1.关于继承: 百度百科对继承的解释是:继承是指一个对象直接使用另一对象的属性和方法。 (话说百科对于计算机概念的继承的...
总结来说,工厂模式是JavaScript面向对象编程中一种重要的设计模式,它提高了代码的灵活性和可扩展性。通过将对象的创建过程封装起来,使得代码在面对多种相似对象时能保持一致性和低耦合性。无论是简单工厂模式还是...
在Java等面向对象编程语言中,设计模式的应用能够提高代码的可读性、可维护性和复用性。以下是对标题和描述中提到的设计模式的详细解释: 1. **代理模式**: 代理模式提供一个代理对象来控制对原对象的访问。代理...
以上是对《设计模式解析》第2版学习笔记的关键知识点总结,这些内容覆盖了面向对象的基本概念、UML的基础知识以及设计模式的重要模式,如Facade模式和Adapter模式。通过深入理解这些知识点,读者可以更好地应用于...