05 面向对象编程

  • 面相对象和面相过程
    面向对象(OOP,Object Oriented Programming )与面向过程(POP,procedure oriented programming)
    二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。
    面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
  • 面向对象的三大特征
    封装 (Encapsulation)
    继承 (Inheritance)
    多态 (Polymorphism)
  • JAVA类及类的成员
    属 性:对应类中的成员变量,在类里声明,不用初始化也有默认值
    行 为:对应类中的成员方法
  • 对象的创建和使用
    使用new +构造器创建一个新的对象;一般将对象同时赋值给一个类变量,否则无法找到该对象。
    使用“对象名.对象成员”的方式访问对象成员(包括属性和方法);
  • 变量的分类:成员变量与局部变量
    在方法体外,类体内声明的变量称为成员变量。
    成员变量可以分为:
  1. 实例变量(不以static修饰),类实例化后才能使用,new + 构造方法后才能使用。实例变量存在于对象所在的堆内存中。
  2. 类变量(以static修饰),不需要类实例化成对象就可以使用

局部变量可以分为:

  1. 形参(方法签名中定义的变量)
  2. 方法局部变量(在方法内定义)
  3. 代码块局部变量(在代码块内定义),直接在类里写一对大括号,在大括号内定义的变量。
  4. 注意的点:局部变量存在于栈内存中。局部变量声明时不指定权限修饰符
  • 方法的调用



    同一个类中,所有的方法可以互相调用,不用new去实例化对象

  • 对象的产生
    当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上面的Person及前面讲过的数组。


  • 匿名对象
    我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。
    如:new Person().shout();
    使用情况
    如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
    我们经常将匿名对象作为实参传递给一个方法调用。
  • 类的访问机制
    在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static的成员变量,编译不通过。)
    在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
  • overloading 方法的重载
    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同(不同类型的参数的顺序不同也可以)即可
  • 可变个数的形参
    //下面采用数组形参来定义方法
    public static void test(int a ,String[] books);
    //以可变个数形参来定义方法
    public static void test(int a ,String…books);
    说明:
    1.可变参数:方法参数部分指定类型的参数个数是可变多个
    2.声明方式:方法名(参数的类型名...参数名)
    3.可变参数方法的使用与方法参数部分使用数组是一致的,调用取可变参数形参值的时候与数组的使用方法是一样的
    4.方法的参数部分有可变形参,需要放在形参声明的最后
    5.数组形参和可变个数形参的区别:如果传参的个数为0,数组形参需要传入Null,而可变形参可以啥都不传
  • 方法的参数传递
    Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。



    即,实参在传入方法里之前,在栈中有自己的地址,形参得到实参的过程,实际上是在栈中另外开辟了空间,复制实参的值,对于基本类型来说,形参复制的是基本类型的值(因此,方法中改变基本类型的值,不会影响实参的值),对于引用类型来说,形参复制的是对象的地址。

  • 关键字- package
    package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。
  • 关键字-import
    为使用定义在不同包中的Java类,需用import语句来引入指定包层次下所需要的类或全部类(.*)。
  • 信息的封装和隐藏
    Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:
    隐藏一个类中不需要对外提供的实现细节;
    使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
    便于修改,增强代码的可维护性;
  • 四种访问权限修饰符



    同一个JAVA文件中,只能有一个public的类,其他的类只能缺省

  • 构造器
    1.默认的构造器前面的修饰符与类的修饰符一致,public或者缺省
    2.构造器的作用:创建对象;给对象进行初始化
    3.一旦显式定义了构造器,则系统不再提供默认构造器
    4.父类的构造器不可被子类继承
  • 关键字-this
    在java中,this关键字比较难理解,它的作用和其词义很接近。
    它在方法内部使用,即这个方法所属对象的引用;
    它在构造器内部使用,表示该构造器正在初始化的对象。(在构造器内,可以用this(参数列表)来使用其他构造函数)
    注意:
    1.使用this()必须放在构造器的首行!
    2.使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。(实际上不能出现构造器自己调用自己)

    this表示当前对象,可以调用类的属性、方法和构
    造器
    什么时候使用this关键字呢?
    当在方法内需要用到调用该方法的对象时,就用this。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容