zoukankan      html  css  js  c++  java
  • JAVA的对象和封装及static与final的用法(详解)

    一:软件出现的目的

         1:用计算机的语言描述现实世界

         2:用计算机解决现实世界的问题

    编程思维:  使用面向对象的思想(描述)面向对象的世界     (符合人类的思维习惯)

    二:面向对象设计和开发程序的好处

        1:符合人类的思维习惯

        2:交流更加流畅

        2:可维护性高(方便修改代码)

        3: 提高设计和开发效率

    三:面向对象的三大特性

         1封装性:
               所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
        2继承性
              所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
       3多态性
              所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

    四:从现实中抽象出类分三步:

      1. 找出它的种类     2. 找出它的属性     3. 找出它的行为

    在编程中的应用:

       1:找出名词确定类、属性    eg: (确定类) class Dog{}       (确定属性)String name="小黑"; String Strain="拉布拉多"

       2:找出动词确定方法           eg:(进食方法)   public void eat (){ //省略代码 }  

       3:剔除与业务无关的属性和方法  

    五:实现封装的步骤

       1画类图:  

          类图的作用:1:用于分析和设计“类”

                                2:直观,容易理解

      2:封装的概念:

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

      3编写代码实现封装

           1:修改属性的可见性                                        (设为private)

           2:创建公有的getter/setter方法                          (用于属性的读写)

           3:在getter/setter方法中加入属性控制语句      (对属性值的合法性进行判断)

    【代码示例】

     1 public class Dog {
     2     private String name;//昵称
     3     private int health;//健康值
     4     private int love;//亲密度
     5     private String strain;//品种
     6 
     7     public Dog() {
     8     }
     9 
    10     public String getName(){
    11         return name;
    12     }
    13     public void setName(String name){
    14         this.name=name;
    15     }
    16     public int getHealth(){
    17         return health;
    18     }
    19     public  void setHealth(int health){
    20         if(health>100||health<0){
    21             this.health=40;
    22             System.out.println("健康值应该在0到100之间,默认值是40");
    23         }else{
    24             this.health=health;
    25         }
    26     }
    27     public int getLove(){
    28         return love;
    29     }
    30     public void setLove(int love){
    31         this.love=love;
    32     }
    33     public String getStrain(){
    34         return strain;
    35     }
    36     public void setStrain(String strain){
    37         this.strain=strain;
    38     }
    39     public void print(){
    40         System.out.println("宠物的自白");
    41         System.out.println("我的名字叫"+name+",健康值是"+health+",和主人的亲密度是"+love+",我是一只"+strain);
    42     }
    44 }

       4:封装的好处:

             (1):隐藏类的实现细节

             (2):只能通过规定方法访问数据

             (3):方便加入控制语句

               (4):方便修改实现 

      六:访问成员变量及方法

         1:static的作用:

                  (1)static 可以用来修饰属性,方法和代码块,称为静态变量,静态方法和静态代码块

                  (2)由static 修饰的属性和方法,可以直接通过类名.属性 或 类名.方法来进行调用

                  (3)由static 修饰的代码块,在运行时,程序默认自动调用,且优先于构造方法和普通方法;若类中有多个代码块,则按照静态代码块顺序依次执行

         2:final的作用:

                   (1)final 可修饰类,属性,和方法

                   (2)当final 修饰一个类时,该类成为最终类,无法被继承。简称为“断子绝孙类”。

                   (3)当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。

                   (4)当final修饰属性(变量)时,则该属性为常量,其固定值不变,该值无法修改

          【示例】

  • 相关阅读:
    linux指令备份
    jdk安装
    java-成员变量的属性与成员函数的覆盖
    Codeforces Round #384 (Div. 2) E
    Codeforces Round #384 (Div. 2) ABCD
    Codeforces Round #383 (Div. 2) D 分组背包
    ccpcfinal总结
    HDU 3966 & POJ 3237 & HYSBZ 2243 & HRBUST 2064 树链剖分
    HDU 5965 枚举模拟 + dp(?)
    Educational Codeforces Round 6 E dfs序+线段树
  • 原文地址:https://www.cnblogs.com/liangbaolong/p/12756295.html
Copyright © 2011-2022 走看看