7 面向对象的三大特征

面向对象的三大特征为:封装、继承、多态。

1 封装(encapsulation)

1.1  广义上的封装就是包装,可以将方法看作是对为完成特定功能的代码的封装,可以把类看作对属性和方法的封装....

  狭义上的封装:将属性私有化,然后提供公有的getter和setter方法以供访问。

  封装的优点:

  1)隐藏了实现细节,简化开发

   2)安全

   3)提高了代码的可维护性和可扩展性。

  步骤:

  1)将属性私有化,将修饰符修改private的

  2)提供公有的访问方法:getter方法:取值,setter方法:赋值

   3)添加访问权限控制

1.2 四种修饰符

  public: 项目下所有的类都能使用

  protected: 本类,同包下的其他类或其他包下子类

  默认的(default/friendly): 本类中访问、同包下其他类访问

  private:只能在本类中访问

  属性,方法和构造方法的修饰符:public/protected/默认的/private

  类的修饰符:public/默认的

2 继承(inheritance)

2.1  继承代表了一种is-a关系,如果说A是B,也就可以说A继承了B

  父类更加通用、子类更加具体

  优点:提高代码的复用性。

  java中实现继承使用extends关键字

   [修饰符] class 类名 extends 父类{

  

   }

  子类可以继承父类的非私有的属性和方法,不能继承父类的构造方法。子类无法继承父类的构造方法,但可以通过super关键字进行调用。

  java中继承是属于单继承,一个类只能有一个父类,但是一个父类可以有多个子类。C++中可以存在多继承,java可以通过接口实现多继承。

  一旦两个两个类建立了继承关系,子类就可以拥有父类非私有的属性和方法。

2.2 方法的重写

  方法的重写(override):一般发生在父子之间,子类重写的方法应该满足以下条件:

   1)子类的方法名,返回值类型,参数列表必须与父类相同

  2)子类的修饰符范围>=父类的修饰符范围

  修饰符范围:public>protected>默认>private

  注意:一旦子类重写了父类中的方法,创建子类实例后,调用子类重写后的方法。

* 重写(override)和重载(overload)区别:

  1)重写一般发生在父子之间,重载一般在同一个类中。

  2)重写要求方法名,返回值类型,参数列表必须与父类相同,并且修饰符范围大于等于父类方法的修饰符范围。

    重载方法名相同,参数列表不同,与返回值类型及修饰符无关。

    3)作用不同

   重载主要是为了提供一种同名方法不同参数的能力(可以让一个类用于多个同名的方法)

   重写主要是为了结合多态使用,提高程序扩展性和可维护性。

2.3 super关键字

  super关键字:代表直接父类的引用,类别this关键字进行记忆。

  用法:

  1)可以使用super关键字访问父类的属性: super.属性名

  2)使用super关键字访问父类的方法:super.方法名()

  3)使用super关键字调用父类的构造方法,但是必须作为构造方法的第一行语句存在。

   注意:在静态方法中不能使用super和this关键字。

2.4 Object类

  java.lang.Object类:所有类的基类

  一个类如果没有显式使用extends继承其他类,这个类继承了Object类,在任何类的对象中使用Object中的方法

  常用的方法:

  getClass() 返回此 Object 的运行时类。主要用于反射机制。

  toString() 返回该对象的字符串表示。如果使用System.out.println(stu);默认调用stu.toString()

     [email protected]==》

     cn.zzsxt.oop6.Student(包名.类名)[email protected]+16进制表示的hashcode码

  toString()方法经常在子类中重写。

2.5 父子类中代码的执行过程

   静态代码块在使用类时执行。 普通代码块在创建对象时执行。

  父类的静态代码块>子类静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法

   在创建子类时,先调用父类的构造方法先创建父类的实例,在创建子类的实例。

2.6 equals和==的区别

   ==在比较内容时分为以下两种情况:

   1)使用==比较基本数据类型,做的值的比较,值相同返回true,否则返回false

   2)使用==比较引用类型,比较不是内容是否相同,而是两个对象的引用(地址)是否相同,如果指向相同的地址返回true,否则返回false。

   equals():比较内容是否相同。

  Object中的equals方法本质比较引用(==),如果需要按照内容进行比较是否相同,就需要重写Object中equals方法。

3 多态(polymorphism)

3.1  生活中的多态:同一种物质,因环境不同而展现不同的形态。比如:水在不同环境下可以展现为固态,液态和气态。

  程序中的多态:同一种接口因不同的实现而执行不同的操作。

  优点:提高了代码的扩展性和可维护性。

  多态在java中实现的前提: 1.继承  2.方法的重写  3.父类引用指向子类

  多态在java中实现的步骤。

  1)建立继承关系

  2)在编译时将父类作为形参(范围大一点,模糊一点)

  3)在运行时将子类对象作为实参,执行的子类重写后的方法。

3.2 类型转换

  1)子类转换为父类--->自动转化 (向上转型)

   a.子类向上转型成父类,上转型对象不能操作子类新增的成员变量和方法。

    b.上转型对象可以操作子类继承或重写的成员变量和方法

    c.如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。

   2)父类转换为子类:强制转换(向下转型)

3.3 instanceof运算符

  作用:判断对象是否为指定类型的实例。如果是指定类型的实例返回值为true,否则返回false

  防止在类型转换时出现ClassCastException异常。

   语法: 对象  instanceof 类型

   if(a instanceof Cat){

      Cat c=(Cat)a;

    }

时间: 06-08

7 面向对象的三大特征的相关文章

php面向对象的三大特征

1.面向对象的三大特征:封装.继承.多态.(抽象(扩展的))2.00A:分析,OOD:设计,OOP:编程.3.封装:信息隐蔽,封装,所有的函数和方法,类中的属性和行为也是封装. 三个访问修饰符public.protected.private也是封装.4.public 公共的 谁都可以用,也可以修改:protected 受保护的 只有自己和后代可以使用和修改: private 私有的 只有自己可以使用和修改:5.继承: 扩展父类的内容,注意只能继承public和protected修饰的内容,而pr

黑马程序员--Objective-C之--OC面向对象的三大特征

OC面向对象的三大特征是封装.继承和多态. OC语言也支持面向对象的三大特征,OC提供了@private.@package.@protected.@public等访问控制符来实现封装 OC也允许子类来继承父类,并且支持多态. 一.封装 封装指的是將对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法对内部信息的操作和访问. OC的封装特性需要通过使用访问控制符来实现. (一).访问控制符 1.@private:当前类访问权限.如果类的成员变量使用@priva

面向对象的三大特征——封装、继承、多态

接触过面向对象的人都知道面向对象有三大特征,分别是封装.继承和多态.这三者分别指的是什么,为什么是这哥仨,使用他们有什么好处,我们来梳理一下. 封装 原则:隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: ①将变化隔离. ②便于使用. ③提高重用性. ④提高安全性. Demo1: 比如一个学生类:他具有姓名和年龄两个属性,但是为了提高安全性和重用性,便于使用,我们将其封装起来. public class Student { private String name; private in

解析PHP面向对象的三大特征

class BenHang extends Card{ /*构造函数与及构造的继承*/ function __construct($cardno,$pwd, $name,$money){ parent::__construct($cardno,$pwd, $name,$money); } function take($money){ echo "本行取款{$money}没有手续费·····<br>"; } function zhuan($money){ echo "

聊一聊面向对象的三大特征

学习Java语言程序设计也有一段时间了.现在我想对封装.继承和多态,在Java中面向对象的三大特征,总结一下我的理解,不妥当的地方望大家包涵.  封装.给我的感觉封装就是一个包装,一个代码是否健壮,与用不用封装有很大的关系,封装就像是包裹一个礼物,不仅让礼物看起来更加精美,而且还完善了内容.请看代码: class Person {     private String name;     private int age;     public void say() {         Syste

面向过程和面向对象及面向对象的三大特征

英文及缩写: 面向过程:procedure oriented programming POP 面向对象:object oriented programming OOP 面向对象和面向过程的历程: 面向过程编程采取的是时间换空间的策略,因为在早期计算机配置低,内存小,如何节省内存则成了首要任务,哪怕是运行的时间更长.随着硬件技术的发展,硬件不再成为瓶颈,相反更好的模拟现实世界.系统的可维护性等问题凸显出来,于是面向对象设计应运而生.当下:应用在PC机上的一般应用系统,由于不太需要考虑硬件的限制,而

面向对象的三大特征、五大原则

1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么.- 继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的<Java与模式>或<设计模式精

小学生之面向对象的三大特征(封装、继承、多态)

在前一篇文章中,我们讲了面向对象的特征之一(封装),那么今天我们来了解面向对象的剩余两大特性. 一.继承 1.定义 继承就是从父类中获取一些公开的成员,如方法和属性.C#中只允许继承一个父类,但允许继承多个接口.如果子类继承接口,则必须实现接口中定义的所有公开成员. 公开成员是指在父类中定义为public的成员(public的作用域可在子类中生效,而private作用域则不可) 子类继承父类: 子类拥有父类非Private的属性和功能: 子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功

c#简要概括面向对象的三大特征

要去面试了,朋友给我出个问题: 一,封装: 我们可以把世界上任何一个东西都看作为一个对象,那么我们这里以人为例,一个人就肯定是一个对象了. 那么封装是什么呢?封装就是这个人要完成一件事情,他所需要的任何工具都带在了自己的身上,所需要的技术也都装在了自己的脑子里了.不需要借助于别人的力量就能完成这一件事情.这个有什么好处呢?好处就是如果我要吩咐这个人去完成一件事情,我不需要知道他是怎么完成的,也不需要协助他去完成,只要知道结果,他完成了就OK了.至于他是先干什么后干什么我不干涉,这有助于他更快更好