初识Java(Java类和对象-类) 2022-05-27 08:58 311阅读 0赞 ### ### ### 一、类 ### 类是封装对象的属性和行为的载体,而在 Java 语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。 1.1 成员变量 在 Java 中对象的属性也称为成员变量。 eg :定义一个图书类,成员变量对应于类对象的属性,在 Book 类中设置 3 个成员变量,分别为 id 、name 和 category ,分别对应于图书编号、图书名称和图书类别 3 个图书属性。 public class Book{ private String name; //定义一个 String 型的成员变量 public String getName(){ //定义一个 getName() 方法 int id = 0 ; //局部变量 setName("Java"); //调用类中其他方法 return id + this.name; //设置方法返回值 } private void setName(String name){ //定义一个 setName() 方法 this.name = name; //将参数赋予类中的成员变量 } public Book getBook(){ return this; //返回 Book 类引用 } } 在 Java 中使用 class 关键字来定义类,Book 是类的名称。同时在 Book 类中定义了 3 个成员变量,成员变量的类型可以设置为 Java 中合法的数据类型,其实成员变量就是普通的变量,可以为它设置初始值,也可以不设置初始值。如果不设置初始值,则会有默认值。 1.2 成员方法 在 Java 语言中使用成员方法对应于类对象的行为。以 Book 类为例,它包含了 getName() 和 setName() 两个方法,这两个成员方法分别为获取图书名称和设置图书名称的方法。 语法 : 权限修饰符 返回值类型 方法名 ( 参数类型 参数名 ) \{ ... //方法体 return 返回值 ; \} 一个成员方法可以有参数,这个参数可以是对象也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值可以在方法体重使用 return 关键字,使用这个关键字后,方法的执行将被终止。无返回值可以使用 void 关键字来表示。 成员方法的返回值可以是计算结果也可以是其他想要的数值和对象,返回值类型要与方法返回的值类型一致。 在成员方法中可以调用其他成员方法和类成员变量。同时在成员方法中可以定义一个变量,这个变量就是局部变量。 如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行。例如,变量 id 在 getName() 方法中值为 0 ,而不是成员变量中 id 的值。 类成员变量和成员方法也可以统称为类成员。 1.3 权限修饰符 Java 中的权限修饰符主要包括 private 、 public 和 protected ,这些修饰符控制着对类和类的成员变量以及成员方法的访问。 如果一个类的成员变量或成员方法被修饰为 private ,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果将类的成员变量和成员方法的访问权限设置为 public ,那么除了可以在本类使用这些数据之外,还可以在子类和其他包的类中使用。如果一个类的访问权限被设置为 private ,这个类将隐藏其内的所有数据,以免用户直接访问它。如果需要使类中的数据被子类或其他包中的类使用,可以将这个类设置为 public 访问权限。如果一个类使用 protected 修饰符,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法。 这么看来,public 和 protected 修饰的类可由子类访问,如果子类和父类不在同一保证包中,那么只有修饰符为 public 的类可以被子类进行访问。如果父类不允许通过集成产生的子类访问它的成员变量,那么必须使用 private 声明父类的这个成员变量。 <table style="width:900px;"> Java 语言中的修饰符权限 <tbody> <tr> <td>访问包位置</td> <td>private</td> <td>protected</td> <td>punlic</td> </tr> <tr> <td>本类</td> <td>可见</td> <td>可见</td> <td>可见</td> </tr> <tr> <td>同包其他类或子类</td> <td>不可见</td> <td>可见</td> <td>可见</td> </tr> <tr> <td>其他包的类或子类</td> <td>不可见</td> <td>不可见</td> <td>可见</td> </tr> </tbody> </table> 当申明类时不适用 public 、protected 和 private 修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法。 eg :在项目中的 com.ljs 包下创建 AnyClass 类,该类使用默认的访问权限。 package com.ljs; //包 class AnyClass{ //使用默认的访问权限 public void doString(){ //使用 public 修饰符 ....//方法体 } } 由于类的修饰符为默认修饰符,即只有一个包内的其他类和子类可以对该类进行访问,而 AnyClass 类中的 doString() 方法却又设置为 public 访问权限,即使这样, doString() 方法的访问权限依然与 AnyClass 类的访问权限相同,因为 Java 语言规定,类的权限设定会约束类成员的权限设定。 还可以写成这样 : package com.ljs; //包 class AnyClass{ //使用默认的访问权限 void doString(){ //使用 public 修饰符 ....//方法体 } } 1.4 局部变量 如果在成员方法内定义一个变量,那么这个变量被称为成员变量。 例如在 Book 类中 ,getName() 方法的 id 变量即为局部变量。实际上方法中的形参也可作为一个局部变量,如在定义 setName(String name) 方法时,String name 这个形参就被看做是一个局部变量。 局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。 public String getName(){ //定义一个 getName() 方法 int id = 0 ; //局部变量 如果这个 id 的初始值去掉,编译器将出现错误 setName("Java"); //调用类中其他方法 return id + this.name; //设置方法返回值 } 1.5 局部变量的有效范围 可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。 public void doString(String name){ int id = 0; //局部变量 id 的作用范围开始 for(int i = 0 ; i < 10 ; i++){ //局部变量 i 的作用范围开始 System.out.println(name + String.valueOf(i)); //局部变量 i 的作用范围结束 } } //局部变量 id 的作用范围结束 在相互不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量。 public void doString(String name){ int id = 0; //局部变量 id 的作用范围开始 for(int i = 0 ; i < 10 ; i++){ //局部变量 i 的作用范围开始 System.out.println(name + String.valueOf(i)); //局部变量 i 的作用范围结束 } for(int i = 0 ; i < 3 ; i++){ //局部变量 i 的作用范围开始 System.out.println(i); //局部变量 i 的作用范围结束 } } //局部变量 id 的作用范围结束 但是在相互嵌套的区域中不可以这样声明,如果将局部变量 id 在方法体的 for 循环中再次定义,编译器将会报错。 public void doString(String name){ int id = 0; //局部变量 id 的作用范围开始 for(int i = 0 ; i < 10 ; i++){ //局部变量 i 的作用范围开始 System.out.println(name + String.valueOf(i)); //局部变量 i 的作用范围结束 } for(int i = 0 ; i < 3 ; i++){ //局部变量 i 的作用范围开始 System.out.println(i); //局部变量 i 的作用范围结束 int id = 7 ; //重复定义局部变量 id ,会报错 } } //局部变量 id 的作用范围结束 在作用范围外使用局部变量是一个常见的错误,因为在作用范围外没有声明局部变量的代码。 1.6 this 关键字 eg : 创建一个类文件,该类中定义了 setName() ,并将方法的参数值赋予类中的成员变量。 private void setName(String name){ //定义了一个 setNamw() 方法 this,name = name ; //将参数值赋予类中的成员变量 } 成员变量与 setName() 方法中的形式参数的名称相同,都为 name ,那么该如何在类中区分使用的是哪一个变量呢?在 Java 语言中规定使用 this 关键字来代表本类对象的引用, this 关键字被隐式地用于引用对象的成员变量和方法, this.name 指的是 Book 类的 name 成员变量,而 this.name = name 语句中的第二个 name 则指的是形参 name 。实质上 setName() 方法实现的功能就是将形参 name 的值赋予成员变量 name 。 this 可以调用成员变量和成员方法,但 Java 语言中最常规的调用方式是使用 “ 对象.成员变量 ”或“ 对象.成员方法 ”进行调用。 this 引用的就是本类的一个对象。在局部变量或方法参数覆盖了成员变量时,就要添加 this 关键字明确引用的是类成员还是局部变量或方法参数。 如果省略 this 关键字直接写成 name = name ,那只是把参数 name 赋值给参数变量本身而已,成员变量 name 的值没有改变,因为参数 name 在方法的作用域中覆盖了成员变量 name 。 this 除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。 eg :创建一个类文件,在类中定义 Book 类型的方法,并通过 this 关键字进行返回。 public Book getBook(){ return this; //返回 Book 类引用 } 在 getBook() 方法中,方法的返回值为 Book 类,所以方法体中使用 return this 这种形式将 Book 类的对象进行返回。
相关 初识内部类 1、成员内部类 内部类:在一个类的内部定义一个内部类。 特点: > 1、 内部类可以使用 private 修饰,表示私有。 只能在外部类当中去使用。 > > 2、 Love The Way You Lie/ 2022年08月30日 01:43/ 0 赞/ 162 阅读
相关 初识StringBuffer类 StringBuffer类 A:StringBuffer类 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改(用+好改变 朱雀/ 2022年06月16日 05:27/ 0 赞/ 185 阅读
相关 初识Java(Java类和对象-类) 一、类 类是封装对象的属性和行为的载体,而在 Java 语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。 1.1 成员变量 在 Java 向右看齐/ 2022年05月27日 08:58/ 0 赞/ 312 阅读
相关 初识Java(Java类和对象-面向对象概述) 一、面向对象概述 面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有相应的属性以及展示这些对象的行为,已解决这些对象面临的一些实 悠悠/ 2022年05月27日 07:28/ 0 赞/ 273 阅读
相关 初识Java(Java类和对象-类的构造方法) 一、类的构造方法 在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时 浅浅的花香味﹌/ 2022年05月26日 20:00/ 0 赞/ 231 阅读
相关 初识Java(Java类和对象-对象的引用) 一、对象的引用 在 Java 语言中尽管一切都可以看做对象,但真正的操作标识符实质上是一个引用,那么引用在 Java 中是如何体现的呢? 语法 :类名 对象引用名 朱雀/ 2022年05月26日 02:43/ 0 赞/ 273 阅读
相关 初识Java(Java类和对象-对象) 一、对象 Java 是一门面向对象的程序设计语言,对象时由类抽象出来的,所有的问题都通过对象来处理,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生、操作和消 亦凉/ 2022年05月25日 23:48/ 0 赞/ 357 阅读
相关 C++类与对象初识 引入:在我们编程语言中,想必大家都应该听说过面向过程编程与面向对象编程,那么到底什么是面向过程编程什么是面向对象编程呢?对于这个问题我想大家都应该听我们的老师讲过一个生动而又形 青旅半醒/ 2022年02月03日 04:13/ 0 赞/ 469 阅读
相关 初识类和对象 python中一切皆为对象,类型的本质就是类。 类的相关知识 def functionName(args): '函文档字符串' ''' class类名 灰太狼/ 2021年12月24日 10:19/ 0 赞/ 305 阅读
相关 List类初识 先看java Api的中文文档: 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引 ╰半橙微兮°/ 2021年09月22日 13:34/ 0 赞/ 282 阅读
还没有评论,来说两句吧...