javase面向对象深入理解(this,代码块)
面向对像的引入:
面向对象是一种编程范式(一种思考方式)
面向过程:关注的是代码的实现细节
面向对象:先把代码实现细节整合到对象中,找到这个对象,就能拥有对象的功能
面向对象基于面向过程,面向对象优于面向过程?分场景进行判断
对象和类之间的关系
对一类对象来进行抽取,吧共有的特征信息抽取成了属性,将共有的行为信息抽取成了方法,将一类对象抽取成了类,类是对对像的概括,对象是对类的具体实现
一个类创建的不同对象,对象之间都是互不影响的,没有别的关系
构造方法用来创建对象的和属性初始话
无参构造
当类中没有定义任何形式的构造方法JVM默认在底层添加无参构造
当类中定义构造方法底层就不会默认添加无参构造方法
public Person(){}—特点
1.没有返回值类型 2.与类同名,3.首字母大写
2.普通方法可以与类同名(与类同名不一定是构造方法)
有参构造public Person(String name){}
作用:在创建对象的时候,便于给属性的赋值(对象初始化)
**重载:**构造方法支持重载形式
特点:没有返回值,与类同名,首字母大写
无参构造的修饰符都是public或者default关键字,否则在创建对象的时候将会不能进行访问,报错不能通过
**Person(){} public Person(){}---都是可以直接进行编译运行**
**界定方法中的参数从哪里来的方式-->Ctrl+左击鼠标**
点击this中的name--参数过来的方式
就近原则(特别重要)java中所有的非静态属性和方法要由对象调用
String name–非静态属性
static String name–静态属性
this关键字–》代表当前类的对象–没有创建对象的时候的对象,java提供的底层特殊的关键字虚拟对象,不是真正存在的对象,只是在内存中将对象的地址拿过来作为指向
1.可以代表当前类刚创建的对象
2.也可以代表当前类还没有产生的对象
3.代表当前类正在活动的对象。
**this:*–>*就近原则进行指向,指向的原则就是代表刚创建的对象,对象不断的创建则this不断的指向
this:—>用于区分构造方法中的属性的指向,当参数名和成员变量属性名一致的时候;
当参数中的属性名和成员变量的属性名不一致的时候,this关键字可以省略也可以不省略,指向是相同的
注意
1.不能在main方法中使用,this是非静态的关键字,main方法是静态的方法,静态不能使用非静态的关键字this。
2.this在方法中可以使用的前提是 方法是非静态的,而且能够代表那个对象调用的方法。
3.方法中的方法签名—*方法名和参数列表
修饰符不一样 public private -->视为同一方法
4.同名方法中。静态方法优先于非静态方法
5.this语句用于调用有参构造和无参构造方法,当还没有对象被创建的时候,一般可用于对象的初始化
6.一定要在首行 this(参数…)
为什么要放在第一行:
在构造函数中,如果你不指定构造器之间的调用关系,那么编译器会给你加上super();目的是在初始化当前对象时,先保证了父类对象先初始化。所以,你指定了构造函数间的调用,那么this()必须在第一行,以保证在执行任何动作前,对象已经完成了初始化。
因为在构造的时候只需要调用父类的super()作为初始化父类一次,如果super(…)和this(…)同时出现的话,那么就会出现初始化父类两次的不安全操作,因为当super(…)和this(…)同时出现的时候,在调用完了super(…)之后还会执行this(…),而this(…)中又会自动调用super(),这就造成了调用两次super()的结果(这是假设super(…)和this(…)同时出现时候,super(…)在this(…)前面,反过来出现也一样)
**构造代码块:**位置–》方法外,类的里面
构造代码块优于所有的方法先执行,进行成员变量属性的初始化,进行属性初始化
局部代码块位置–》方法的里面{}
用于控制变量的生命周期,在何时进行释放
成员变量和局部变量
成员方法用来描述类的信息的
构造方法不是成员方法,不是用来描述类的信息的,只是创建对象
内存:
成员变量 -->堆
局部变量–>栈-进入占栈被初始化赋值使用引用
使用范围:
成员变量:整个类
局部变量:整个方法
位置:
成员变量:方法外,类里卖弄
局部变量:方法里面
本文地址:https://blog.csdn.net/qq_43349161/article/details/107876386