欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javase面向对象深入理解(this,代码块)

程序员文章站 2022-06-28 17:12:15
面向对像的引入:面向对象是一种编程范式(一种思考方式)面向过程:关注的是代码的实现细节面向对象:先把代码实现细节整合到对象中,找到这个对象,就能拥有对象的功能面向对象基于面向过程,面向对象优于面向过程?分场景进行判断对象和类之间的关系对一类对象来进行抽取,吧共有的特征信息抽取成了属性,将共有的行为信息抽取成了方法,将一类对象抽取成了类,类是对对像的概括,对象是对类的具体实现一个类创建的不同对象,对象之间都是互不影响的,没有别的关系构造方法用来创建对象的和属性初始话无参构造当...

面向对像的引入:
面向对象是一种编程范式(一种思考方式)
面向过程:关注的是代码的实现细节
面向对象:先把代码实现细节整合到对象中,找到这个对象,就能拥有对象的功能
面向对象基于面向过程,面向对象优于面向过程?分场景进行判断

 对象和类之间的关系
		对一类对象来进行抽取,吧共有的特征信息抽取成了属性,将共有的行为信息抽取成了方法,将一类对象抽取成了类,类是对对像的概括,对象是对类的具体实现
	
	一个类创建的不同对象,对象之间都是互不影响的,没有别的关系 

构造方法用来创建对象的和属性初始话

无参构造
当类中没有定义任何形式的构造方法JVM默认在底层添加无参构造
当类中定义构造方法底层就不会默认添加无参构造方法
public Person(){}—特点
1.没有返回值类型 2.与类同名,3.首字母大写
2.普通方法可以与类同名(与类同名不一定是构造方法)

有参构造public Person(String name){}
作用:在创建对象的时候,便于给属性的赋值(对象初始化)
**重载:**构造方法支持重载形式
特点:没有返回值,与类同名,首字母大写
无参构造的修饰符都是public或者default关键字,否则在创建对象的时候将会不能进行访问,报错不能通过

 **Person(){}   public Person(){}---都是可以直接进行编译运行**


	**界定方法中的参数从哪里来的方式-->Ctrl+左击鼠标**
	点击this中的name--参数过来的方式 

javase面向对象深入理解(this,代码块)

就近原则(特别重要)
java中所有的非静态属性和方法要由对象调用
String name–非静态属性
static String name–静态属性

this关键字–》代表当前类的对象–没有创建对象的时候的对象,java提供的底层特殊的关键字虚拟对象,不是真正存在的对象,只是在内存中将对象的地址拿过来作为指向
1.可以代表当前类刚创建的对象
2.也可以代表当前类还没有产生的对象
3.代表当前类正在活动的对象。
javase面向对象深入理解(this,代码块)
javase面向对象深入理解(this,代码块)
javase面向对象深入理解(this,代码块)
**this:*–>*就近原则进行指向,指向的原则就是代表刚创建的对象,对象不断的创建则this不断的指向

this:—>用于区分构造方法中的属性的指向,当参数名和成员变量属性名一致的时候;
当参数中的属性名和成员变量的属性名不一致的时候,this关键字可以省略也可以不省略,指向是相同的
javase面向对象深入理解(this,代码块)
注意
1.不能在main方法中使用,this是非静态的关键字,main方法是静态的方法,静态不能使用非静态的关键字this。
2.this在方法中可以使用的前提是 方法是非静态的,而且能够代表那个对象调用的方法。
3.方法中的方法签名—*方法名和参数列表
修饰符不一样 public private -->视为同一方法
4.同名方法中。静态方法优先于非静态方法
javase面向对象深入理解(this,代码块)javase面向对象深入理解(this,代码块)5.this语句用于调用有参构造和无参构造方法,当还没有对象被创建的时候,一般可用于对象的初始化
6.一定要在首行 this(参数…)

javase面向对象深入理解(this,代码块)
为什么要放在第一行:
在构造函数中,如果你不指定构造器之间的调用关系,那么编译器会给你加上super();目的是在初始化当前对象时,先保证了父类对象先初始化。所以,你指定了构造函数间的调用,那么this()必须在第一行,以保证在执行任何动作前,对象已经完成了初始化。

因为在构造的时候只需要调用父类的super()作为初始化父类一次,如果super(…)和this(…)同时出现的话,那么就会出现初始化父类两次的不安全操作,因为当super(…)和this(…)同时出现的时候,在调用完了super(…)之后还会执行this(…),而this(…)中又会自动调用super(),这就造成了调用两次super()的结果(这是假设super(…)和this(…)同时出现时候,super(…)在this(…)前面,反过来出现也一样)

**构造代码块:**位置–》方法外,类的里面
构造代码块优于所有的方法先执行,进行成员变量属性的初始化,进行属性初始化

javase面向对象深入理解(this,代码块)局部代码块位置–》方法的里面{}
用于控制变量的生命周期,在何时进行释放
javase面向对象深入理解(this,代码块)
成员变量和局部变量
成员方法用来描述类的信息的
构造方法不是成员方法,不是用来描述类的信息的,只是创建对象
内存:
成员变量 -->堆
局部变量–>栈-进入占栈被初始化赋值使用引用

使用范围:
成员变量:整个类
局部变量:整个方法
位置:
成员变量:方法外,类里卖弄
局部变量:方法里面

本文地址:https://blog.csdn.net/qq_43349161/article/details/107876386

相关标签: java面向对象