zoukankan      html  css  js  c++  java
  • Java 三大特性——封装、继承、多态

    一、封装

        封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。

    概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法,可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,要访问该类的代码和数据,必须通过严格的接口控制。

    作用:1.实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,同时也方便修改;     

             2.方便控制。若程序出现问题或需要更新,可以直接在该类中修改,而不用去修改调用代码的程序片段;

             3.隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。

    二、继承

    1.概念:继承,在原有类基础上增加新的属性和方法来构造新类的技术。一个类继承另一个类,则称继承的类为子类Sub Class,又叫继承类,被继承的类为父类Super Class,又叫超类。私有成员private无法继承,构造器无法继承。
    语法:在定义子类时:class 子类名称 extends 超类{
                            子类新增的成员
                          }
    2.特点:创建子类对象时,也会先创建父类对象,只是没有对象变量来接收这个父类对象,所以无法调用; 子类可以写自己特有的属性和方法,目的是实现功能的扩展,子类也可以复写父类的方法即方法的重写。

    3.作用:实现代码的复用。

    4.this和super:java中的只读变量,只能使用,不能修改。this表示本对象、本类、本构造器,super表示父对象、父类、父构造器。

    方法或构造器的形参和域名可以重名,但是需要利用this来实现,如:

     

    注意:
        1)当父类有带形参的构造器时,子类必须也有构造器,并且必须在子类构造器的第一行代码就调用父类构造器:super(实参);
        2)当子类没有复写父类的域,则子类公用父类的域的值,无论修改哪个类的该域的值,另一个类中该属性值也一同变化。当子类覆写父类的域,则子类域的值和父类域的值就分离;

    5.覆写:子类继承父类的成员,重新实现了父类的成员OverRide,覆写属性即重新申明该属性,覆写方法即修改方法的内容。

    、多态

    1.概念:多态,即多种形态,一个对象属于多个类,根据上下文、根据实际需要,动态的决定属于哪个类,执行哪个类中的同名方法。比如"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性。

    2.条件:1)继承; 2)覆写; 3)申明的父类对象却引用了一个指向于子类的对象;

    3.特点:1)相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同;

                2)多态的概念发展出来,是以封装和继承为基础的;

                3)子类以父类的身份出现,但做事情时还是以自己的方法实现。子类以父类的身份出现需要向上转型(upcast),其中向上转型是由JVM自动实现的,是安全的,但向下转型(downcast)是不安全的,需要强制转换。子类以父类的身份出现时自己特有的属性和方法将不能使用。

    附:一段同时体现java三大特性的代码

  • 相关阅读:
    mac os programming
    Rejecting Good Engineers?
    Do Undergrads in MIT Struggle to Obtain Good Grades?
    Go to industry?
    LaTex Tricks
    Convert jupyter notebooks to python files
    How to get gradients with respect to the inputs in pytorch
    Uninstall cuda 9.1 and install cuda 8.0
    How to edit codes on the server which runs jupyter notebook using your pc's bwroser
    Leetcode No.94 Binary Tree Inorder Traversal二叉树中序遍历(c++实现)
  • 原文地址:https://www.cnblogs.com/Carolinee/p/5310577.html
Copyright © 2011-2022 走看看