关于java中的面向对象

本文介绍了面向对象编程的基本概念,包括类和对象的关系、属性和行为的定义、对象的创建、类的内存图、成员变量与局部变量的区别以及构造方法的作用。重点讲解了如何通过类创建对象,以及this关键字在解决重名问题上的应用。
摘要由CSDN通过智能技术生成

一.面向对象:

           面向对象:面向对象不是一种技术,而是一种思想。以什么样的形式,组织代码,以什么样的思路去解决问题。

 二.类和对象:

         类和对象:java中想要创建对象,就必须用类的存在。

         类是指一组相关属性和行为的结合,我们将其理解为是一张对象的设计图。(通常在编写代码时,public class 类名{},这样就定义了一个类)。生活中各个事务都可以称为对象。

          java语言中需要根据类来进行创建对象。一个类由两部分组成,一个叫做属性,另一个叫做行为。

        属性,主要包括成员变量:跟之前定义变量的格式一样,只不过要放在方法的外面。

       行为:成员方法:跟之前一样,只不过定义方法前需要将static关键字去掉。

       类:一组相关属性和行为的集合,可以将其看作是对象的设计图。

       对象:是根据类,创建出来的实体,该实体可以利用类中的属性和行为。

       类和对象的关系:

       1)依赖关系:需要根据类,创造对象。

       2)数量关系:根据一个类,可以创造出多个对象。

       类的组成:类的本质就是对事物的描述。

       属性(名字的描述):在代码中使用成员变量表示。和之前一样,只不过位置发生了变化,定义在了方法的外面。

       行为(动作的描述):在代码中使用成员方法表示。成员方法和之前的定义方法一样,只是将static关键字给去掉了。

       创建对象的格式:类名 对象名 = new 类名();

       使用对象成员变量的方法。:对象名.成员变量;

       使用对象成员方法的格式。

       对象名.成员方法();

.对象和类的使用细节

如果打印对象名,会得到的是地址值。例如

public class test{
class zoo{
String name  = "kaixin";
}
public static void main(String [] args){
zoo twa = new zoo();
System.out.println(zoo);
}
}
}

  这样打印的结果并不是twa这个对象中的变量,而是一份地址。例如下图所示:这份地址采用的是全类名的形式:报名 + 类名(下图中所示的打印结果并非是上图代码的结果。)

成员变量,没有赋值也可以使用,只不过打印显示的是默认值。

变量的默认值:

byte类型的默认值:0
short类型的默认值:0
int类型的默认值:0
long类型的默认值:0
float类型的默认值:0.0
double类型的默认值:0.0
char类型的默认值: 
boolean类型的默认值:false

四.对象和类的内存图。

类属于引用数据类型,首先当源文件加载成字节码文件进入方法区,主方法直接进入栈内存,随后然后按照顺序结构执行流程,执行第一个程序Student stu = new Student();该程序中含由new,系统会在堆内存中开辟空间,产生一份地址,这份空间中含有Student中的成员变量和成员方法,由于这些数据存在在堆内存中,如果没有赋值,系统则会付给它默认值,同时在这份空间中也产生了成员方法和成员变量的引用地址。完成了上述操作之后,会将刚开始这个空间的地址,返回给堆内存中的stu中,然后按照顺序结构进行运行,遇到类中的调用的方法时,系统会根据stu中的地址,找到堆内存中的空间,这个空间中存在着成员方法的引用地址,系统找到这个引用地址之后会根据这个地址在字节码文件中的位置,将该成员方法进行调运,随后该方法进入了栈内存中,进行运行,运行后弹栈消失。

  两个对象的引用图,分析与一个对象分析较为类似。主要原因是因为,在创立对象时,系统在堆内存中创立了两个互不干扰的空间。

   两个引用指向相同内存,可以利用数组内存图的思想分析,因为他们的本质都是地址值的交换。

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

成员变量:

类中的位置:成员变量在方法的外面。

初始化不同:成员变量由默认初始化值。

内存中的位置不同:成员变量是在堆内存中。

生命周期不同:随着对象的创建而存在的,随着对象的消失而消失的。//当一个对象没有任何引用记录时,这个对象会被判定为java内存中的不定时垃圾,会被java程序中的垃圾回收器,给回收。、

作用域:在自己所属的打括号内

局部变量:

类中的位置:局部变量存在在方法内。

初始化不同:没有初始值,使用之前需要提前赋值

内存位置不同:局部变量存在在堆内存中

生命周期不同:随着方法的调运而存在,随着方法的运行结束而消失。

作用域:在自己所属的大括号内

变量的作用域:就是变量的使用范围。

成员变量之所以在整个程序中都能用,是因为它所属的大括号就是这个类的大括号。

无论时成员变量还是局部变量都有着自己的作用域,即在自己的大括号里面可以起作用

四,this的作用

成员变量与局部变量重名的时候,java语言采用就近原则

该程序使用this关键字解决了成员变量和局部变量重名的问题。This可以调用本类的对象,this调用本类的方法。

因此this的作用就是调用本类的成员(成员包括成员方法和成员变量)

This.的使用规则:

当用this.去调用本类成员的方法时,this.可以直接省略。

当用this.去调用本类成员变量时,只有本类中无重名变量时,this.才能省略。

This表示的是当前类对象的引用。

打印this关键字,会得到一份地址,这份地址就是当前对象的地址。//谁来调用我,我就代表谁!

哪一个对象调用的方法,this关键字就代表谁。

该流程的内存图解:首先源码文件加载成字节码文件,停留在方法区中,主方法是程序的入口,会直接从方法区进入栈内存中,然后按照顺序结构进行执行。首先进行执行一语句,创立了一个对象stu,接着系统会在堆内存中,开辟出一个新的空间用来存放stu中的数据,同时产生一份地址,并将这份地址返回给stu,此时stu就记录着这个地址,此时打印stu就会打印出这份地址,接着运行程序,在推内存中使变量age赋值23,然后继续运行,调用方法sayhello,此时的调用者式对象stu,由于调用的方法中含有形参:String name ,并且赋值为“西域狂鸭”,由于此时,sayhello中并没有先前堆内存那个空间的地址,因此系统会直接赋值给sayhello方法中name,此时打印的是西域狂鸭,之后运用this引用名字,由于this关键字的作用,this关键字引用那个对象就会代表那个对象的地址,当this引用name之后,就会将之前产生的地址值交给系统,系统会根据这份地址,找到先前创建对象时所开辟的空间中,并找到name这一变量中的数据,钢门吹雪,并在控制台中打印出钢门吹雪。//这个过程我们可以看出当类文件有重名的变量时,系统会采取就近原则,打印最近的变量,遇到这个问题我可以利用this关键字,this关键字的作用就是引用谁代表谁。

This关键字的作用就是调用本类中的对象,调用这后会将该类的地址交给系统,这样系统就能找到该类的数据。简单称为,调用谁,就代表谁。

This关键字代表当前对象的引用(地址)

五.构造方法的概述:

构造器:

public 类名(){}//空参构造方法

public 类名(参数){}//代参构造方法

初始化一个新建的对象

构建,创建对象的时候,所调用的方法。//这两句话传达的时一个意思.//创建对象时所使用那个方法就叫做构造器。

格式:1.方法名字与类名相同,大小写也需要一致。

2.没有返回值类型,连void都没有

3.没有确定的返回值(不能由return语句带回结果数据)

构造方法的执行时机:

      在创建对象的时候,被调用执行。没创建一次对象。就会执行一次构造方法。

构造方法的作用:
       1.本质作用:创建对象

       2.结合执行时机:可以在创建对象的时候,给对象中的数据做初始化操作。

面向对象初级的东西就到这里,下一篇介绍面向对象高级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值