精华内容
下载资源
问答
  • 面向对象三个特性 1.封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的...

    面向对象三个特性

    1.封装

    封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    2.继承

    面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

    通过继承创建的新类称为“子类”或“派生类”。

    被继承的类称为“基类”、“父类”或“超类”。

    继承的过程,就是从一般到特殊的过程。

    要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

    在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

     

    继承概念的实现方式有三类:实现继承、接口继承和可视继承。

    Ø         实现继承是指使用基类的属性和方法而无需额外编码的能力;

    Ø         接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

    Ø         可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

    在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

    抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。

    OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

     

    3.多态

    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

    实现多态,有二种方式,覆盖,重载。

    覆盖,是指子类重新定义父类的虚函数的做法。

    重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

    其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!

    展开全文
  • 面向对象三特性

    2019-10-08 17:19:55
    面向对象三特性 -- 笔记面向对象三特性封装继承多态 面向对象三特性 面向对象三特性:封装、继承、多态 封装 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来...

    面向对象三大特性

    	面向对象三大特性:封装、继承、多态
    

    封装

    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

    封装的好处

    1. 隐藏类的实现细节;
    2. 只能通过规定方法访问数据;
    3. 方便加入控制语句;
    4. 方便修改实现;

    封装的步骤

    1. 修改属性可见性 – 设为private
    	public class pet {
    		// 创建属性并修改可见性
    		private String name;
    		private int age;
    	}
    
    1. 创建get/set方法 – 用于属性读写
    	// 创建get方法
    	public String getName() {
    		return name;
    	}
    	// 创建set方法
    	public void setName(String name) {
    		this.name = name;
    	}
    
    1. 在get/set方法中加入控制语句 – 对属性进行合法判断
    	public void setAge(int age) {
    		// 加入控制语句
    		if(age > 0 && age < 100){
    			this.age = age;
    		}
    	}
    

    继承(is-a)

    继承:使用继承可以优化代码,将重复代码抽取到父类当中,减少代码量,方便修改代码

    使用继承

    1. 编写父类
    class pet {
    	//公共属性和方法
    }
    
    1. 编写子类,继承父类
    class dog extends pet {
    	//子类特有的属性和方法
    }
    
    class cat extends pet {
    	//子类特有的属性和方法
    }
    

    继承的特性

    • 单根性
      只能继承一个类,不能多重继承

    • 传递性
      从父类继承来的元素,可以被子类继承

    子类访问父类成员

    使用super关键字

    • 访问父类构造方法
    	//构造器
    	public dog() {
    		// 访问父类构造方法
    		// super();
    		super("二哈",2);
    	}
    
    • 访问父类构造属性
    	super.name;
    
    • 访问父类方法
    	super.print();
    

    不可被继承的资源

    • 不可继承被私有化的属性和方法
    • 构造方法

    多态

    多态:指一个行为,拥有多种不同表现形式。 例:小明拥有人类形态同时拥有学生形态

    优点: 可扩展性强

    使用多态实现思路

    1. 编写父类
    	class Pet {
    		//吃东西
    		public void eat(){		
    		}
    	}
    
    1. 编写子类,子类重写父类方法
    	class Dog extends Pet {
    		//重写父类方法
    		public void eat(){
    			System.out.println("吃骨头");
    		}
    	}
    
    1. 运行时,使用父类类型,子类对象
    	class cat extends Pet {
    		//向上自然转型
    		Pet pet = new Dog();
    	}
    

    何时使用多态

    1.当父类为方法参数
    2.当父类作为方法返回值

    只能调用父类有的方法
    例:

    创建父类并添加方法

    public class Father {
    	public void eat(){
    	}
    }
    

    创建子类重写父类方法并添加独有方法

    public class Son extends Father{
    	public void eat(){
    		System.out.println("吃饭");
    	}
    	
    	public void play(){
    		System.out.println("玩");
    	}
    }
    

    使用多态调用方法

    public class Main {
    	public static void main(String[] args) {
    		Father father = new Son();
    		father.eat();
    		//报错
    		father.play();
    	}
    }
    

    编译看左边,运行看右边

    展开全文
  • 面向对象三个基本特征

    千次阅读 2013-03-29 09:00:41
    面向对象三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的...

    面向对象的三个基本特征是:封装、继承、多态。

    o_OOBase.gif

    封装

    封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    继承

    面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

    通过继承创建的新类称为“子类”或“派生类”。

    被继承的类称为“基类”、“父类”或“超类”。

    继承的过程,就是从一般到特殊的过程。

    要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

    在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

     

    继承概念的实现方式有三类:实现继承、接口继承和可视继承。

    Ø         实现继承是指使用基类的属性和方法而无需额外编码的能力;

    Ø         接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

    Ø         可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

    在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

    抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。

    OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

     

    多态

    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

    实现多态,有二种方式,覆盖,重载。

    覆盖,是指子类重新定义父类的虚函数的做法。

    重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

    其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。”

    那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

     

    概念讲解

    泛化(Generalization)

    o_Generalization.gif

    图表 1 泛化

    在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person(人)是基类,Teacher(教师)、Student(学生)、Guest(来宾)是子类。

    若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。

    例如,教师是人,Teacher 是Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。

    如果A是基类,B是A的派生类,那么B将继承A的数据和函数。

    如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。

    若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能和属性。

     

    聚合(组合)

    o_aggregationBase.gif

    图表 2 组合

    若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。

    例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。

     

    聚合的类型分为无、共享(聚合)、复合(组合)三类。

     

    聚合(aggregation)

     

    o_aggregation.gif

    图表 3 共享

    上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。

     

    组合(composition)

    o_composition.gif

    图表 4 复合

    这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。

     

    依赖(Dependency)

    o_Dependency.gif

    图表 5 依赖

    这里B与A的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响。

    展开全文
  • C++面向对象三个基本特征

    千次阅读 2019-09-19 20:00:38
    封装是面向对象特征之一,是对象和类概念的主要特性. 简单的说,一类就是一封装了数据以及操作这些数据的代码的逻辑实体。在一对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,...

    一、三大特征
    封装,继承,多态

    二、封装
    所谓封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

    三、继承
    所谓继承就是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现.继承概念的实现方式有二类:实现继承与接口继承.实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

    四、多态
    所谓多态就是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
    多态的三个条件:有继承,有虚函数重写,有父类指针指向子类对象。

    展开全文
  • js面向对象三特征

    千次阅读 2019-11-29 13:33:30
    面向对象三特征: 一、 封装:隐藏内部的细节,不暴露在外面(不让其它访问仅能自己访问) //在js中利用函数的作用域来模拟 // 封装 let Pet=function (name,types) { this.name=name; //封装,将变量用一...
  • C#面向对象三特性

    万次阅读 多人点赞 2016-11-23 21:02:09
    想要学好面向对象编程,除了掌握语法结构外最重要的就是熟悉面向对象三特性,这三大特性不是相互独立的而是相互关联、你中有我我中有你的关系,想要真正了解三大特性必须把这三部分当做一整体来考虑。...
  • 面向对象最重要的三个基本特征

    千次阅读 2016-03-08 23:01:41
    面向对象三个基本特征是:封装、继承、多态。
  • 面向对象(OOP)的三个特性: 封装性(Encapsulation),继承性和多态性。 面向对象(OOP)的五个原则:单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP...
  • 面向对象是相较于面向过程而言的,面向对象一直都是一很抽象的概念,也是面试官钟爱且常问的问题,理解抽象的东西最好的办法就是利用比喻,找现实世界的例子去匹配这概念,就会使得抽象的东西容易理解。...
  • 学java的都知道,java语言有三个特性,也可以说是三个优点,就是 1.简单性: java语言相对于C语言,C++来说比较简单。 2.跨平台:java语言编写的代码可以在不同的操作系统运行,即windows、android 、ios、linux等等...
  • JAVA面向对象三特征

    千次阅读 2018-09-13 09:52:16
    JAVA面向对象三特征: 1.封装 (英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。 封装可以被认为是一保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 ...
  • 面向对象三个特性

    千次阅读 热门讨论 2018-05-25 20:33:05
    一,封装解释:每个对象都包含它能进行操作所需要的所有信息,这个特性成为封装,因此对象不必依赖其他对象来完成自己的操作。好处:1.减少耦合。2.类内部的实现可以自由的修改。3.类具有清晰的对外接口。二,继承...
  • Java面向对象编程特征 - 封装

    千次阅读 多人点赞 2020-03-25 20:45:49
    本文关键字:Java、面向对象特征、封装。封装是面向对象编程中的特征之一,在对封装性进行解释时我们有必要先了解一些面向对象的思想,以及相关的概念。
  • 2.继承:从一已有的类中派生新的类,这些类具有父类的一般特性法,也具有自身的特殊的特性。 优点:实现抽象。 具体实现方式:继承需要符合的关系 is a 3.多态:向同一父类的不同子类发送同一条信息,行为不同...
  • 面向对象编程的三个基本特征

    万次阅读 2016-04-22 13:50:51
    三个基本特征面向对象三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让...
  • 提到面向对象,让人首先想到的就是封装,继承,多态,好像这就是面向对象编程的全部,或者任何面向对象的编程语言都要支持的特性。 下面从面向对象的编程语言(C++, Java...)与面向过程的语言(C...)进行一些比较. ...
  • Java面向对象编程特征 - 继承

    千次阅读 多人点赞 2020-03-31 18:24:08
    本文关键字:Java、面向对象特征、继承。继承是面向对象编程的特征之一,继承将面向对象的编程思想体现的更加淋漓尽致,允许类和类之间产生关联。
  • Java 面向对象三特征

    千次阅读 2018-07-24 21:24:59
    面向对象三特征: 封装性 继承性 多态性 1. 封装性  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只给特定的对象或其他类进行访问,即使用不同的访问统治权限使类被不同的...
  • Java面向对象三特性(封装、继承、多态)

    千次阅读 多人点赞 2021-05-19 20:59:41
    面向对象的语言有特性:封装、继承、多态。特性面向对象编程的核心。下面就来介绍一下面向对象特性。 如果想了解面向对象可以看一下这一篇博客类和对象 一、封装 1.封装的概念 在我们写代码的时候...
  • 面向对象三特性五大原则

    千次阅读 2016-06-22 15:17:59
    面向对象包括了部分内容:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。 类:具有相同属性和方法的事物集合,是抽象的。 对象:是类的实例化结果,是具体的。 类与对象的关系:类是对象的抽象,...
  • C#面向对象三特征

    2018-01-03 20:00:10
    面向对象特征:继承,多态,封装 封装:把一或多项目封装在一物理的或者逻辑的包中。 封装是为了防止对实现细节的访问。 访问权限: public :公共的,公开的,允许类将其成员变量,和成员函数暴露给...
  • 面向对象三个基本特征(封装)

    千次阅读 2017-07-17 10:14:10
    面向对象三个基本特征是:封装、继承、多态 封装 : 百度上解释的方法为: 前面有private 修饰的【属性】或者是【方法】, 不能【直接】被外部类的实例化对象访问,这样就是封装。 封装是面向对象特征之一,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 327,237
精华内容 130,894
关键字:

面向对象的三个特性