java -- 面向对象的三大特性(封装,继承,多态)

一.封装

1.什么是封装?

  把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节。数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问。

2.封装的步骤? 

   1.使用private 修饰需要封装的成员变量。

   2.提供一个公开的方法设置或者访问私有的属性。通过(get/set)方法获取

3.封装的好处与作用?

  封装的作用:1. 框架  2. 工具类

  封装的好处:  1. 提高了数据的安全性   2. 操作简单   3. 隐藏了方法的实现。

二.继承

1.继承的格式?

  A extends B
  A: SubClass 子类
  B:SuperClass,超类,父类,基类

2.封装的好处?

  1.减少代码的冗余,提高代码的复用性  2.提高了代码的扩展性  3.为多态提供了前提

3.说明?

  1.子类继承父类以后就拥有了父类中的属性和方法(我们不认为可以继承父类中的构造器)
  2.子类继承父类一定要存在"is a"的关系
  3.父类中属性被私有化后,子类不能直接进行访问,但是我们可以通过间接的方式进行访问(set/get),虽然父类中的属性不能被直接访问,但是我们还是认为该属性被继承到了。
  4.子类除了可以继承属性和方法外,还可以在定义自己独有的属性和方法
  5.父类的概念是相对的,父类分为:直接父类和间接父类
  6.子类除了可以获取直接父类的属性和方法外,还可以获取间接父类的属性和方法
  7.所有类都会继承Object类。如果一个类没有显示的继承某个类,那么这个类将默认继承Object类
  8.一个父类可以有多个子类,但是一个子类只能有一个父类(Java的单继承特性)

4.方法的重写?

  子类继承父类后,如果对父类中的方法不满意那么可以考虑使用方法的重写(覆盖,重写)

  说明:

    1.子类继承父类后,如果对父类中的方法进行了重写,那么在通过子类对象调用父类中被重写的方法,实际调用子类重写的方法。

  细节: 

    权限修饰符 返回值类型 方法名(形参列表){
      方法体
    }

    

    1.父类被重写的方法和子类重写的方法的方法名和形参列表必须相同
    2.父类重写的方法的权限修饰符不小于子类重写方法的权限修饰符
      父类被重写的方法的返回值    子类被重写方法的返回值     结果
        Number            Number及Number的子类         可以
        void              void               可以
        int              double            不可以
    3.子类方法抛出的异常不能大于父类被重写方法的异常

    注意:

      1.如果父类的方法被private修饰那么该方法不可以被子类重写
      2. 如果和子类相同的方法,那么同时加static(不是方法的重写)要么不加static(是方法的重写)

    [email protected] //注解:用来说明当前的方法是一个重写的方法

总结:super 和 this 的区别:

     1.代表的事物不一样:

          this:代表所属方法的调用者对象。

          super:代表父类对象的引用空间。

      2.使用前提不一致:

          this:在非继承的条件下也可以使用。

          super:只能在继承的条件下才能使用。

      3.调用构造方法:

           this:调用本类的构造方法。

           super:调用的父类的构造方法

三.多态

1.多态性:一类事物的多种形态  

2. 多态性的理解:
  1.广义上:方法的重写,重载,子类对象的多态性
  2.狭义上:子类对象的多态性
3.子类对象的多态性:父类的引用指向子类的对象

public class Test {

    public static void main(String[] args) {

        // 父类的引用指向子类的对象
        Person p = new Woman();
        // 虚拟方法应用(动态绑定):编译看左边,运行看右边
        p.eat();
        p.show();

        // 多态的缺点:不能调用子类中独有的方法和属性

        /*
         * 需求: 在多态的情况下如何调用子类中自己独有的方法和属性
         * 向下转型
         */

        Woman woman = (Woman)p;
        woman.buy();

        // ClassCastException    -      类型转换异常
        // 因为P对象的本身就是一个Woman所以转成Man就会抛异常
//        Man m = (Man)p;
//        m.run();

        /*
         * 需求:如何防止类型转换异常
         * a instanceof A:    a 对象是否是A类型的一个实例。如果是返回true,否则返回false
         */

        if(p instanceof Woman) {
            System.out.println("true");
        }else {
            System.out.println("false");
        }

    }
}

原文地址:https://www.cnblogs.com/jiujiang/p/11601076.html

时间: 2024-10-07 05:50:11

java -- 面向对象的三大特性(封装,继承,多态)的相关文章

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.

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

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

JAVA面向对象编程三大特性------封装、继承、多态

一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系.系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互.也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象. 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

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

多态 一,多态的概念 多态(polymorphism), 是指一个名字可以有多种语义.在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法.通常有两种途径实现多态:方法的重载和覆盖. 多态性允许以统一的风格处理已存在的变量及相关的类.多态性使得向系统里增加新功能变得容易.继承性和多态性是降低软件复杂性有有效技术. 二,多态的实现 1.方法的重载 方法重载时: 参数必须不同.参数个数不同或类型不同. 返回值可以相同,也可以不同. 重载的价值在于它允许通过使用一个

Python全栈开发——面向对象的三大特性(继承 &amp; 多态 &amp;封装)

1.继承 1.两层意思改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o: def __init__(self,name,temperature): self.name=name self.temperature=temperature def turn_ice(self): if self.temperature<0: print('温度太低,变成[%s]' %self.name

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象