Java基础之类与对象、封装、this、super

面向对象

概念:面向对象它区别于面向过程,强调的是通过调用对象的行为来实现功能,而不是自己一步步的去操作实现。

特点:面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成一个指挥者,其实面向对象的底层还是面向过程,只不过这种思想将事物模型化了,一个事物就好比一个盒子,里面有属性、方法,我只需要来调用这个模型去解决问题即可,至于里面的具体过程是如何实现的,无须关心。

面向对象和面向过程各自的优缺点

面向过程

优点:比面向对象性能高,因为它省去了对象实例化的一个过程,在有些强调性能的软件方面,可以使用面向过程的思想,比如Linux开发;

缺点:程序不易维护、不易扩展、耦合度比较高,而且不易复用。

面向对象

优点:比面向过程更易维护、更易扩展低耦合易复用

缺点:性能比较低,内存开销比较大。

对象内存图

在这里插入图片描述
虽然每个对象的实例化拥有不同的属性,但是他们的方法是公共的,而且不会说每个对象的方法都会占用一块内存空间,他们每个实例都在堆内存中保存一个方法标记,然后去方法区里面找真正的这个方法。

成员变量和局部变量的区别

  • 在类中的位置不同
    成员变量:类中,方法外
    局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样
    成员变量:类中
    局部变量:方法中
  • 初始化值的不同
    成员变量:有默认值
    局部变量:没有默认值。必须先定义,赋值
  • 内存中的位置不同
    成员变量:堆内存
    局部变量:栈内存
  • 生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

封装

面向对象思想是对客观世界的一个模拟,而在现实世界中,成员的属性都是保存在对象内部的,对外不可见,封装可以认为是一个保护屏障,将一个对象的成员属性隐藏了起来,外界只有通过该类提供的公有的方法才可以对其进行访问,合理的封装提高了类的安全性,避免外界随意的修改其值。

构造方法

概念:当一个对象被创建的时候,构造方法用来初始化该对象,该对象的成员变量赋值,无论你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数的构造方法,一旦自己定义了构造方法,那么默认的无参构造方法就会失效。

this,super,this(),super()

this的用处:

  • 指代当前对象本身,相当于指向当前对象的一个指针;
  • 避免语义的混淆,在区分一个类的成员变量和形参的时候,用this.name = name来避免二义性。

super的用处:

  • 指代当前对象的最近一层的父类,相当于指向当前对象最近一层父类的指针;
  • 可以用来访问父类中的非私有的方法(构造方法不可以);
  • 也可以做一个区分,如果当前子类的方法和父类的方法、属性重名了,可以用来区分。

this():
调用当前类中的另一种形式的构造方法(放在构造方法第一行);

super():
调用父类的构造方法(放在构造方法第一行);

注意:

  • this()和super()不能放在一个构造方法中使用,因为两个都要处于第一行。
  • super()是在子类中调用父类的构造方法
  • this()是在本类中调用其他重载形式的构造方法
  • 从本质上讲,this是一个指向本对象的指针,而super是Java中的关键字。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值