• Java OOP——第一章 对象和封装


    1、软件出现的目的:

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

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

     

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

       交流更加流畅

       提高设计和开发效率

    计算机语言的发展向接近人的思维方式演变:汇编语言 [面向机器]、c语言    [面向过程]、java语言 [面向对象]

    类和对象的区别和联系

    1、类是抽象的,概念的,代表一类事物,比如人类,猫类..

    2、对象是具体的,实际的,代表一个具体事物

    3、类是对象的抽象,对象是类的实例

    2、面向对象设计的过程就是抽象的过程,分以下三步:

        第一步:发现类;

       第二步:发现类的属性;

       第三步:发现类的方法;

    3、类图:使用类图描述类

      用于分析和设计“类”;

      直观、容易理解;

         

    4、类名、属性名、方法名、常量名命名规范:

        类名由一个或几个单词组成,每个单词的第一个字母大写,ru:Dog、StringBuffer;

        ◆属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写,如:health、stuName、println()、getMessage();

        ◆常量名由一个或几个单词组成,所有字母大写,如:PI;

    5、构造函数:

    无参构造函数:

      方法名与类名同名;

      没有返回值;

      与返回修饰符无关;

      作用:给成员属性默认赋予初始值

    6、构造方法:

    构造方法是类的一种特殊的方法,

    它的主要作用是完成对新对象的初始化。(初始化你的成员属性(变量);

    它有几个特点:

    1、方法名和类名相同

    2、没有返回值

    3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。

    ★一个类可以定义多个不同的构造方法。

    ★调用时:

    ★给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。

     

    示例:系统提供默认构造函数

      public Pnguin()

      {   

      }

        F5单步跳入

        F6单步跳过

    类的构造方法小结:

      1、构造方法名和类名相同;

      2、构造方法没有返回值;

      3、主要作用是完成对新对象的初始化;

      4、在创建新对象时,系统自动的调用该类的构造方法;

      5、一个类可以有多个构造方法;

      6、每个类都有一个默认的构造方法。

      7、构造方法一般使用public修饰,但在单例模式中,也可以使用private修饰

    7构造方法重载:

    自定义构造方法:系统不再提供默认无参构造方法

     

    构造方法重载的调用:

     

    Eg:说出运行结果:

     

    Eg:错误示例

    8、方法重载的判断依据:

           必须在同一个类里

           方法名相同

           参数列表(方法参数的个数或参数类型)不同

           与方法返回值和方法修饰符没有任何关系。

              ▲在使用this调用自身的其他构造方法时,只能作为第一条语句;

    9、static修饰符:static可以用来修饰属性、方法和代码块

            ●static代码块://静态代码块只能给static属性赋初始值;永远都比构造方法先执行一步;

                语法: static                 

            {   

            }

                eg:static   {

          name=“小明”;

          System.out.print(“我是静态代码块”);

         }                           

            ●static修饰的变量属于这个类所有,即由这个类创建的所有对象公用一个static变量;

            ●把static修饰的属性和方法成为类属性(类变量)和类方法,

      ●不用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法;

    类变量是该类的所有对象共享的变量,

    任何一个该类的对象去访问它时,取到的都是相同的值,

    同样任何一个该类的对象去修改它时,修改的也是同一个变量。

     

    定义语法:

          访问修饰符 static 数据类型 变量名;

    访问类变量:

          类名.类变量名  或者  对象名.类变量名

    类方法是属于所有对象实例的

    语法:

          访问修饰符 static 数据返回类型 方法名(){}

        注意:类方法中不能访问非静态变量(类变量)。

    使用:

      类名.类方法名 或者 对象名.类方法名

        ★static静态的方法可以访问static静态变量,不能访问非静态变量(类变量)

              ★非静态方法可以访问非静态变量(类变量),同时也可以访问static静态变量。

           ▲java中规则:类变量原则上用类方法去访问或操作

    类变量与实例变量区别:

      加上static称为类变量或静态变量,否则称为实例变量

      类变量是与类相关的,公共的属性

      实例变量属于每个对象个体的属性

      类变量可以通过 [类名.类变量名]  直接访问

    类方法小结

      类方法属于与类相关的,公共的方法

      实例方法属于每个对象个体的方法

      类方法可以通过 [类名.类方法名]  直接访问

    类的成员方法(函数)

    1、方法的参数列表可以是多个,参数列表可以是多个,并且数据类型可以是任意的类型int float double char..

          访问修饰符 返回数据类型 函数名(参数列表){

                语句; //函数主体

          }

    2、方法可以没有返回值,返回类型可以是任意的数据类型(int,float,double,char..)也可以没有返回值void表示没有返回值

          访问修饰符 返回数据类型 函数名(形参列表){

                语句; //函数主体

          }

     

    static修饰与非static修饰的区别

     

    static、非private修饰

     非static、private修饰

    属性

    类属性、类变量

    实例属性、实例变量

    方法

    类方法

    实例方法

    调用方式

    类名.属性

    类名.方法()

    对象.属性

    对象.方法()

    对象.属性

    对象.方法()

    归属

    单个对象

     

             在加载类的过程中,先完成静态变量的分配,在执行静态块两者在创建对象之前执行;

        ◆类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问

        ◆类属性只能访问类属性和其他类方法;

        ◆静态方法中不能使用this和super关键字;

        ◆在类中可以定义static变量,在方法里不可以定义static变量,也就是说,类变量不能是局部变量;

        ◆构造方法没有返回值类型,,如果有,则不是构造方法,而是和构造方法同名的成员方法

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

    步骤:

      1.修改属性的可见性,

      2.设置setter和getter方法,

      3.设置属性的存取限制。

        ●好处:隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便的加入存取控制语句,限制不合理操作。

    封装是面向对象的三大特性之一,就是将类的状态信息隐藏在内部,

    不允许外部程序直接访问,

    而是通过该类提供的方法来实现对隐藏信息的操作和访问;

    封装的好处:

            只能通过规定方法访问数据

            隐藏类的实现细节

            方便加入控制语句

            方便修改实现

            

    java提供四种访问控制修饰符号控制方法和变量的访问权限:

      1、公开级别:用public修饰,对外公开,可以被同一个项目中的所有类访问具有项目可见性,这是最大的访问权限;

      2、受保护级别:用protected修饰,对子类和同一个包中的类公开,可以被同一个包中的类访问,被同一个项目中不同包中的子类访问;

      3、默认级别:没有修饰符号,向同一个包的类公开,成员变量和方法只能被同一个包里的类访问,具有包可见性;

      4、私有级别:用private修饰,只有类本身可以访问,不对外公开,成员变量和方法只能在某定义的类中被访问,具有类可见性;

    四种访问级别的访问范围:

    访问级别

    访问控制修饰符

    同类

    同包

    子类

    不同包

    公  开

    Public

    受保护

    Protected

    默  认

    没有修饰符

    私  有

    private

    11、this关键字:

                   

     

    this的用法:

    1、表示对当前对象的引用;

    2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分,其实这是第一种用法的特例,比较常用;

    3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。注:只能引用一个构造方法且必须位于开始!

       

      

    注:类方法指的静态方法,不能使用this。

        在构造方法内调用其他构造方法,this(),super()都要放在第一位。

    this关键字属于调用(即调用具体方法、属性)的发起者,当类实例化时,调用者就是指的具体的实例对象,当没有实例化对象时,则是类本身调用

    12附加:

    一个Java文件(.java)中可以包含多个类,但是只能包含一个公共类(public),这个公共类名与Java文件名要保持一致;

    创建对象不一定非要通过new关键字;(见下面详解)

      ◆java中实例化对象是为了更好的调用,类是为了定义,而对象是实体,正确的是把类实例化为对象并调用方法,

      ★java中就有创建实例化对象的五种方式

        1、用new语句创建对象,这是最常见的创建对象的方法。

        2、通过工厂方法返回对象,如:String str = String.valueOf(23);

        3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

          如:Object obj = Class.forName("java.lang.Object").newInstance();

        4、调用对象的clone()方法。

        5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

    属性可以是简单变量,也可以是一个对象。对象中并非必须有属性和方法,可以只有属性,也可以只有方法;

    对象被赋值后,只与当前对象有关系。和其他对象没有关联。

    ●JAVA是一种强语言类型;

    类的属性可以被赋值,方法也可以有具体实现;

    面向对象优点:增加代码复用性、有利于信息隐藏、便于在程序中模拟现实中的实体、与人类思维习惯一致、提高程序的可维护性和安全性;

      

    封装的优点:可增强数据的访问限制,降低各模块之间的依赖程度,也可以提高代码的复用程度,增强程序的可维护性;

     

    封装的作用:在面向对象中封装是指隐藏对象的属性和实现的细节,仅对外提供公共访问方式。

    在类定义中用private关键字来隐藏属性。

    是用private把类的细节与外界隔离起来,从而实现数据项和方法的隐藏,而要访问这些数据项和方法唯一的途径就是通过类本身,

    类才有资格调用它所拥有的资源(方法,数据项属性等等)。所以第一个好处就是数据的安全性提高了。

    是通过隐藏隔离,只允许外部对类做有限的访问,开发者可以自由的改变类的内部实现,而无需修改使用该类的那些程序。

    只要那些在类外部就能被调用的方法保持其外部特征不变,内部代码就可以自由改变,各取所需,利于分工。

    就是提高了代码的重用性,封装成工具类以后能够减少很多繁琐的步骤

    类是对象的抽象,类是对象的模板,对象是类的具体,是类的实例。

    类中可以定义属性(类的属性描述了类所具有的特征)和方法,

    在建立对象时,即是对类的实例化,对象的行为和属性由类来决定,即对象的行为和属性被封装在类中 。

          

    在Java中,定义一个类使用关键字class,而创建类的对象则使用new关键字。

    function一般是用在Java Script中去定义函数。

    #define 关键字是C语言中宏定义关键字,

    dim则是VB语言中定义变量的关键字。

    ●Java中类的创建方式是: 访问修饰符 class 类名{ }

    实例方法可以调用本类的方法,不能调用其他类的实例方法,

    但不一定可以调用父类或其他类的方法,因为在其他的方法中可能是私有的,访问修饰符是private或protected,static方法等,不可以直接调用;

    枚举指由一组固定的常数组成的类型。枚举也可以像一般的类一样添加方法和属性,可以为它添加静态和非静态的属性或方法。

    创建类的步骤:创建类时必须有类名,使用class关键字,使用.访问对象的属性和方法


    非静态的可以访问静态的,静态的不可以访问非静态的;

    输出静态变量的值,可以通过类名调用,也可以通过对象调用;

    在构造方法和普通方法中能使用 this.静态变量但是在静态变量中不能使用;

    能够在方法中使用的也可以是局部变量也可以是成员变量。

    修饰实例变量要用public,成员变量会有默认的初始值,可以不用给;

    构造方法名必须和类名一致,并且没有返回值,构造方法是在创建对象时调用,对其进行初始化工作,

    构造方法一般使用public修饰,但在单例模式中,也可以使用private修饰

    使用对象的属性形式是:对象.属性,

    使用对象的方法形式是对象.方法名(),

    用来描述对象动态特征(行为)的一个动作序列是对象的方法。

    使用JAVA封装的步骤:

     

    封装的步骤:

     

     

     

  • 相关阅读:
    Sqlserver中一直在用又经常被忽略的知识点一
    PowerDesigner从Sqlserver中反转为带注释的字典及快捷键操作
    10.5 搜索的优化版
    每篇半小时1天入门MongoDB——1. MongoDB介绍和安装
    ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询
    Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项
    Mysql性能优化三(分表、增量备份、还原)
    Mysql性能优化二
    Mysql性能优化一
    Redis主从复制
  • 原文地址:https://www.cnblogs.com/HQING/p/9494494.html
Copyright © 2020-2023  润新知