• Java基础--面向对象(上)


    一、面向对象的概念

    1.什么是面向对象?

      (1)面向对象是一种符合人类思维习惯的编程思想。

      (2)面向对象是一种思考问题的思维方式。

    2.三种特性:

      (1)封装性

      (2)继承性

      (3)多态性

    3.建立面向对象思维方式:

      (1)先整体,再局部

      (2)先抽象,再具体

      (3)能做什么,再怎么做

    4.如何学习面向对象?

      (1)掌握一门面向对象的语法

      (2)熟悉面向对象的设计原则

      (3)熟悉面向对象设计模式

    二、类与对象

    1.类的定义:

      (1)类是分类、类别

      (2)通过分类,我们可以区别不同的事物种类,在日常生活中,我们常常这样做

      (3)所以,类是一组具有相同特性(属性)与行为(方法)的食物集合。

    2.对象的定义

      一个类要想真正的进行操作,且必须依靠对象,对象的定义格式如下:

    类名称 对象名称 = new类名称();

    2.类与对象的的关系

      (1)类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。

      (2)类由属性和方法构成:

        属性:相当于一个个的特征

        方法:相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉

    3.类和对象的定义格式

    在Java中可以使用以下的语句定义一个类:

    class类名称{
            属性名称;
            返回值类型 方法名称(){}
    }

    对象的定义格式:

    类名称 对象名称 = new类名称();

    如果想要访问类中的属性或方法(方法的定义),

    则可以依靠以下的语法形式:

    访问类中的属性:

    对象.属性;

    调用类中的方法:

    对象.方法();

    4.类与对象小结

    (1)new关键字:表示向内存申请空间,也表示实例化一个对象,创建一个对象。

    (2)一个对象在内存中的大小,由该对象的所有属性所占的内存大小的总和。引用类型变量在32位系统上占4个字节,在64位系统上占8个字节。加上而外的对象隐形数据所占的大小。

    (3)相同的类型才可以赋值。

    (4)不同的引用,指向同一个对象,任何一个引用改变对象的值,其他引用都会反映出来。

    (5)编程时要注意的问题,在确定不使用对象时,要尽早释放对象:引用null

    (6)当一个堆中的对象没有被任何引用变量所指向时,该对象会被JVM的GC程序认为是垃圾对象,从而被回收。

    三、封装性

    1.封装性的概念

      (1)封装性是面向对象思想的三大特征之一。

      (2)封装就是隐藏实现细节,仅对外提供访问接口。

        封装有:属性的封装、方法的封装、类的封装、组件的封装、模块化的封装、系统级封装...

    2.封装的好处

    (1)模块化

    (2)信息隐藏

    (3)代码重用

    (4)插件化易于调试

    (5)具有安全性

    3.封装缺点

      会影响执行效率、

    4.封装性的体现,需要权限修饰符来配合

    (1)Java规定的4种权限(从小到大排列):private、缺省、protected、public

    (2)4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类

    (3)具体的,4种权限都用来修饰类的内部结构:属性、方法、构造器、内部类

          修饰类的话,只能使用:缺省、public   

    四、成员变量和局部变量

    1.在类中的位置不同

      成员变量:在类中定义

      局部变量:在方法中定义或者方法的参数

    2.在内存中的位置不同

      成员变量:在堆内存(成员变量属于对象,对象进堆内存)

      局部变量:在栈内存(局部变量属于方法,方法进栈内存)

    3.生命周期不同

      成员变量:随着对象的创建而存在,随着对象的销毁而消失

      局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

    4.初始化值不同

      成员变量:有默认初始化值,引用类型默认null

      局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

    注意:

      局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

    五、构造方法

    1.什么是构造方法:

      (1)构造方法是类构造对象时调用的方法,用于对象的初始化工作

      (2)构造方法是实例化一个类的对象时,也就是new的时候,最先调用的方法。

    2.构造方法的定义:

      构造方法是在类中定义的,构造方法的定义格式:方法名称与类名称相同,无返回值类型的声明。

    3.对象的实例化语法:

    Dog dog = new Dog();//new Dog后面有个括号,带括号表示调用了方法,此时调用的方法就是构造方法了
    

    4.构造方法重载

    无参构造方法:

    public Dog(){}
    //带一个参数的构造方法:
    public Dog(String name){
        this.name =name;
    }

    带多个参数的构造方法:

    public Dog(String name,int age){
        this.name =name;
        this.age = age;
    }

    5.构造方法小结

    (1)构造方法名称与类名相同,没有返回值声明(包括void)

    (2)构造方法用于初始化数据(属性)

    (3)每一个类中都会有一个默认的无参的构造方法

    (4)如果类中有有显示的构造方法,那么默认构造方法将无效

    (5)构造方法可以有多个,但参数不一样,成为构造方法的重载

    (6)在构造方法中调用另一个构造方法,使用this.(),该句代码必须在第一句

    (7)构造方法之间的调用,必须要有出口

    (8)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留

    (9)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象)

    (10)private Dog(){},构造方法私有化,当我们的需求是为了保证该类只有一个对象时。

      什么时候一个类只需要一个对象?比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。权衡只用一个 对象产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象。

  • 相关阅读:
    第八章 Python 对象和类
    第七章 Python 盒子:模块、包和程序
    第六章 Python 函数(二)
    第五章 Python 函数(一)
    VS的32位、64位预处理定义;
    python 3D散点绘图;
    基于生长的棋盘格角点检测算法解读
    C++11: std::function<void()> func;
    有关pyinstaller打包程序后,转到其他电脑报“Failed to excute script"的问题;
    Qt: 监听文件夹QFileSystemWatcher;
  • 原文地址:https://www.cnblogs.com/s1023/p/11221396.html
Copyright © 2020-2023  润新知