Java中类初级知识
1. 面向对象三大特点概览
面向对象三大特点:封装、继承、多态
封装是面向对象中的核心思想,它将对象的方法和属性抽象概括成一个类,给用户提供需要的实现功能的函数接口,不让其看到实现细节,此举还可保护类的内部数据完整性,具体实现与调用完全分离
继承的思想起源于类与类之间的关联性,这就引出不同类代码复用的想法,可以节省编码时间也可以减少系统在使用过程中出现错误的概率
多态理解起来较为抽象,需要辅以一定的实例来深刻了解,总体来说,这个多态指的是子类的多样性,但在编写子类代码是依照统一的风格编写程序,只不过多了一歩实例化子类的对象;多态的实现是依据抽象类的接口而非具体类,因为它子类的多样性
2. 类中基本成员
2.1类修饰符
访问包位置
类修饰符
private
protected
public
本类
可见
可见
可见
同包其他类或子类
不可见
可见
可见
其他包的类或子类
不可见
不可见
可见
/div>
p>所谓可见不可见即为能否调用,接下来对上述表格解释说明之
/p>
ul>
包中java基础 根据名称获得类编写的类(class) 构成。所有对于同包的其他类或子类来说,public自然是可以访问这里需要记住保护类型的类是可以访问的就ok了,private是使用范围极小只有本类中的其他类才能调用
/ul>
h4 id="h5">2.2成员变量、成员方法
/h4>
p>下面给出一个Book实例,以介绍成员变量定义与用法
/p>
div>
/div>
p>通过这一个实例可以得到成员变量就是普通的变量,结构体、double、float之流,当然也可以是自定义数据类型也没毛病,当然成员变量也是由三个修饰符来限制其被调用范围的
/p>
h6>成员方法的调用方式
/h6>
div>
/div>
p>很明显可以看到·这种成员方法的定义方式和普通的函数方法定义方式几乎一样,区别只在于成员方法定义时加上了一个权限修饰符
/p>
h6>需要格外注意一点
/h6>
p>关于类中的局部变量定义域:如果一个方法中含有与成员变量同名的局部变量,则该局部变量在此方法内有效,并屏蔽了与其同名的成员变量
/p>
h6>注:类中的成员变量和成员方法统称为类成员
/h6>
p>等等,似乎还有个小问题,既然类中的成员变量和类都有权限修饰符,那以谁为准呢?县官不如现管,当然是
类的权限会约束类成员的权限了
/p>
h4 id="h6">2.3局部变量
/h4>
p>局部变量在方法内部声明,并且只能在方法内部使用,在外层的方法被调用时被分配内存,请求在方法执行完毕后自动释放内存而消亡,在使用局部变量的时候必须先对其进行初初始化。它是在方法体中定义的变量以及方法的参数,只在定义它的方法内有效。成员变量如果没有人为初始化,
系统将自动根据其所属类型进行初始化,基本数据类型变量量系统赋值0,引用型变量赋值NULL。局部变量在方法执行结束后就被销毁,与此不同,成员变量其实是一种全局变量
/p>
h4 id="h7">2.4 类中 this 关键字
/h4>
p>this关键字只能在方法内部使用,与c++中类的定义类似,只不过c++中this是一个对象指针
/p>
h6>this的四种用法
/h6>
ul>
/ul>
p>使用this调用成员变量发生在方法内部,当成员变量(类下声明的变量)的名字与局部变量(方法内声明的变量)的名字相同时,使用this.变量名来表示该变量代表的是成员变量。
/p>
div>
/div>
ul>
/ul>
p>使用this调用成员方法同样也发生在方法内部。通常情况下,我们在方法内部调用其他方法时,使用的方式是直接调用,即直接写方法名。其实,此时我们可以在要被调用的方法名前使用this关键字加“.”调用,这两种调用成员方法的方式是一样的,
由于使用第二种方式没有多大的意义,所以一般情况下,我们选择直接调用的方式。/p>
div>
/div>
ul>
/ul>
p>使用this关键字调用其他重载的构造器是this关键字非常重要的用法之一,采用this调用其他构造方法需要将this语句写在构造器内的第一行,否则会报错。这种调用方式的优点在于一个构造器可以不必重复编写其他构造器中已有的代码,而是通过调用其他构造器实现代码复用,从而提供良好的类代码结构。
/p>
p>其实我个人目前是用不太到~
/p>
div>
/div>
p>上述程序解释
/p>
p>创建对象时,构造器就会被调用,我们来看一下构造器的调用顺序:
/p>
p>首先,创建对象时没有传入参数,所以先调用无参构造器,进入无参构造器后,执行this(“Ben”),然后进入参数为String类型的有参构造器,此时将”Ben”传给name,执行(name,165)。
最后进入参数为String和int类型的构造器,执行该构造器内的语句,即最终的name为”Ben”,最终的height为165。这种使用参数最多的构造器来初始化成员变量的方式在开发中很常用。
/p>
ul>
/ul>
div>
/div>
p>我们来分析一下运行程序是怎么运行的,传入的this代表的是什么呢?为什么输出的是贝克呢?
首先看程序的入口main方法,先创建对象t,创建对象时,进入Test2This类调用它的有参构造器,此时name为传入的”贝克”,也就是说当前创建的这个对象t的name为”贝克”。然后,用对象t去调用
method4()方法,该方法内部调用了method3()方法,并传入了this。因此,进入method3()方法,打印this的名字,这里的这个this代表的就是调用method4()方法的对象,即一开始的对象t。所以这里就体现了this的第四种用法(this表示当前对象)。在这里,可以简单理解为:this在method4()方法中被调用,因此this指的就是调用method4()这个方法的对象。
/p>
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26345.html