转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html

众所周知,java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】

一、封装

        对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)

        具体来说:

                1.属性: 私有 private(提供set和get方法)

                2.方法: 公开或私有public/private

                3.方法声明 --> 公开

                  方法实现 --> 隐藏

                 实现改变时,对对象的使用者没有影响。

 

二、继承

              共性放到父类,特性放到子类;子类,父类 --> 其实就是特殊 --> 一般

        1.关键字: extends  例如:Dog extends Animal{}

        2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构),

          C++中是单继承

          java中要实现多继承,通过接口来实现。

        3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。

        4.java中的访问修饰符

访问修饰符

访问权限

 继承 

private       

本类内部

不能继承

default       

本类+同包

同包子类可以继承

protected     

本类+同包+不同子包

可以继承

public        

公开

可以继承

5.构造对象过程

                   (1)分配空间

                   (2)递归地构造父类对象

                                a. 父类 初始化属性

                                b. 父类 构造方法

                   (3)初始化属性

                   (4)调用构造方法



        6.super  

               用法:

                   super()  调用父类的构造方法,只能出现在构造方法的第一行

                   super.方法名   super表示父类的对象,通过它去调用父类的方法

               注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的

                     第一句既不是this(),也不是super()时,那么就会在这里隐含的调用

                     他的父类的无参的构造方法,即隐含的有super()。



三、多态

            运行时多态。

            子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。

        1.多态原则:

                  (1)对象类型不变

                  (2)只能用引用调用其引用类型中定义的方法

                  (3)运行时,根据对象的实际类型去找子类覆盖之后的方法

             例子:

                  有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有

                  eat()方法,sleep()方法中睡6小时,还有wangwang()方法。

                  现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。



          2.对象的强制转换

                 格式: 引用 instanceof 类型

                        引用所指的对象是否与类相符,返回值boolean值。

                 用法:

                       Animal a=new Cat();

                       if(a instanceof Dog)

                       {

                          Dog d=(Dog)a;

                          d.wangwang();

                        }

                 说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条)



          3.多态的灵活变换

                  (1)用于参数列表上:

                               public void m(A a){} 可以用A类的任何子类对象作为参数

                  (2)用在返回值上:

                              public A m(){}  这个方法可能返回A类的任何子类对象

java中的面向对象的三大基本特征的更多相关文章

  1. 【java基础】面向对象的三大基本特征之-------继承

    面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...

  2. Java中的面向对象

    Java中的面向对象 在软件开发的学习中, 我最先接触的开发语言就是java,但都是简单的函数和循环数组的应用.说道面向对象,第一次看到这个词的时候还是在C#的学习过程中,我记得当时PPT上霸气的解释 ...

  3. Java学习:面向对象的三大特征:封装性、继承性、多态性之继承性

    面向对象的三大特征:封装性.继承性.多态性. 继承 继承是多态的前提 ,如果没有继承,就没有多态. 继承主要解决的问题就是:共性抽取. 继承关系当中的特点: 子类可以拥有父类的“内容” 子类还可以拥有 ...

  4. Java中的面向对象I

    一.首先来了解一下Java面向对象的五个程序设计方式: 1.万物皆对象 Java以类为基本模块来将问题抽象化,在计算机中解决实际生活中的问题 2.程序为对象的集合,程序中的类通过互发消息来告知彼此要做 ...

  5. 深入分析Java中的I/O类的特征及适用场合

    Java中有40多个与输入输出有关的类.假设不理清它们之间的关系.就不能灵活地运用它们. 假设从流的流向来分,可分为输入流和输出流,而输入流和输出流又都可分为字节流和字符流.因而可将Java中的I/O ...

  6. 【java基础】面向对象的三大特征---多态

    java的引用变量有两种类型,编译时类型和运行时类型,如果编译时类型和运行时类型不一致,就会出现多态. 多态分为: 运行时多态 java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称 ...

  7. C#面向对象的三大基本特征

    封装: 封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现(可以使代码更加安全),外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程 ...

  8. JAVA中常说的三大框架指:SSH

    即:spring.Struts.hibernate Spring:功能强大的组件粘合济,能够将你的所有的Java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应用 ...

  9. Java中的面向对象II

    既然要创建一个对象那么就需要有一个类,下面介绍类的构建. 一.类的两个元素: 1.字段 字段也就是类变量,每一个类变量都是类的成员. <1.>类变量访问指定通常是私有的(private)或 ...

随机推荐

  1. 打印控件Lodop

    官网:http://www.lodop.net/demo.html Lodop.C-Lodop使用说明及样例   Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又 ...

  2. 实现多层抽屉菜单,点击其中一项会动画打开该抽屉--第三方开源--MultiCardMenu

    下载地址:https://github.com/wujingchao/MultiCardMenu <net.wujingchao.android.view.MultiCardMenu xmlns ...

  3. Javascript-- jQuery Ajax应用

    使用ajax()方法加载服务器数据 使用ajax()方法是最底层.功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值,它的调用格式如下: jQuery.a ...

  4. Engineer manager

    your tasks and responsibilities Position: Major Tasks  Lead site project management to ensure all p ...

  5. PhotoShop使用指南(3)—— 将多张图片添加到图层

    第一步:选择文件菜单>脚本>将文件载入堆栈 第二步:点击浏览添加要批量载入的图片

  6. 15_游戏编程模式EventQueue

    #### 两个例子 .GUI event loop ``` while (running) { // 从事件队列里获取一个事件 Event event = getNextEvent(); // Han ...

  7. Azure新建的CentOS设置root账户的密码

    前言:Azure在新建VM的时候的账户使用的是自定义的用户名和密码或者自定义的用户名使用公钥 1.使用自定义的用户名登录到服务器. 2.设置root的密码: sudo passwd root 3.按照 ...

  8. 使用virtualenv搭建python3的环境

    转:http://blog.csdn.net/liuchunming033/article/details/46008301 转:http://www.jb51.net/article/85527.h ...

  9. django的settings文件

    转载:http://www.cnblogs.com/likeshan168/articles/3596344.html

  10. 序章:为什么学习使用kotlin、及kotlin的一些碎碎念

    为什么使用kotlin? 当然是因为项目目前的开发语言是kotlin啊! 一方面是想能够尽快适应项目,另一方面,kotlin这门语言独特的语法,确实很吸引我,也让我意识到java代码在某些程度上的繁琐 ...