介绍项目开发中容易混淆Java知识,结合Android项目结构介绍,理清各类型对象引用的来龙去脉。
01
类和对象
通过案例来了解Android开发中Java的相关基本概念。面向对象编程语言最重要的一个概念就是类和对象。类是组成Java程序的基本要素,它封装了属性和方法。通过 “类名 引用变量名 = new 构造方法;” 的方式将类实例化为对象。标识符(含类名、方法名、变量名等)的命名规范如下:
(1) 组成类名的各单词首字母大写,剩余字母小写;
(2) 变量名、方法名首字母小写,其余单词首字母大写,剩余字母小写;
(3) 标识符只能由字母、数字、下画线、$符号组成;
(4) 不能以数字开头;
(5) 标识符不能使用Java和Android的关键字。
从本案例起,只将涉及的代码和关键配置文件内容列出,其余代码和配置文件可参见案例库。
在FirstActivity.java中定义了两个类:FirstActivity和Student,分别对应第1~20行和第22~44行。两个类定义在一个Java文件中或者分别放置在两个Java文件中的效果是一样的。Student类也可以放置在第19行与20行之间,此时Student类变成了FirstActivity类的内部类。回顾前面讲述的内容,FirstActivity是FirstActivity.java文件中唯一用关键字public修饰的类,类名必须和文件名前缀完全一致。FirstActivity类的运行入口为onCreate方法。
程序运行到第9行,调用FirstActivity类中的student方法,为便于区别于类,方法名首字母小写。括号内是student方法的实参。程序运行到此行会调用第15~19行的student方法,在Logcat中输出“姓名=方法”。
程序运行完student方法后返回到第10行,声明并创建一个名为student1的对象实例,关键字new后的Student是Student类的无参构造方法。构造方法名必须与类名同名,因此构造方法的首字母也大写。程序转到第27~31行运行Student无参构造方法。
【注】
构造方法与普通方法的区别如下:
(1) 构造方法的首字母大写,普通方法首字母小写。
(2) 构造方法不能指定返回类型,默认返回类的实例。普通方法需要指明方法返回类型,如果没有返回类型,方法名前要用关键字void修饰。
(3) 如果类中没有定义构造方法,则隐含调用父类的无参构造方法;如果父类没有定义无参构造方法,则依次向上寻找,直至调用Object类的无参构造方法。如果类中的普通方法没有定义(含重载),则隐含调用父类的同名方法;如果父类中也没有定义,则程序出错。
(4) 子类构造方法的第一条命令前隐含一条super,调用父类的无参构造方法。子类普通方法中则没有super,如果要调用父类中的同名普通方法使用super.方法名。
程序返回第11行,声明并创建一个名为student2的对象实例,此时调用的是带参数的Student构造方法,对应第33~38行。在Student类中同时存在无参构造方法和有参构造方法,将其称为重载,具体内容在案例“方法重载”中详解。
最后程序执行到第12行,student2.getName调用实例变量student2中的getName方法。这是调用类中成员变量的常用方式。在本案例中要搞清楚变量关系图,如图2-19所示。
■ 图2-19 变量关系图
实例变量是与类的实例共存亡的变量,它随着类实例化而建立,随着类实例的消亡而删除。第24行中的name属于成员变量中的实例变量,类实例student1和student2中的name有不同的存储地址,属于两个不同的变量。变量的使用要遵循作用域的就近规则,如第42行的name与第24行声明的name属于同一个作用域,是同一个变量。第37行等号右边的name对应第33行的局部变量name,由于此局部变量name与第24行的实例变量name同名,为区分两者,实例变量name前要加关键字this以示区别,如this.name。
有static修饰的成员变量为静态变量,也叫类变量。顾名思义,类变量是与类共存亡的变量。对于同一个类的所有实例,类变量共享同一个存储地址,即所有类实例中的类变量是同一个。如第25行类变量count对类实例 student1和student2是共享的,各自执行加1操作都是对共享的类变量count依次执行加1操作。定义类时类变量就建立,类变量可以不用将类实例化以后再调用。如第12行中student1.count是调用类实例student1中的count,Student.count是直接调用Student类中的类变量count,注意两者首字母s的大小写差异。虽说两者调用的都是同一个变量,但概念是有差异的。
【注】
count变量没有赋初值就执行++操作而没有报错,原因是成员变量如果是基础数据类型,其默认初值为0或0.0,包装类数据类型的成员变量默认初值为null。如果是局部变量则必须赋初值后才能使用。
程序运行结果如下:
实例讲解
Android项目开发基础与实战
精彩回顾
教学辅助系统使用
精彩预告
约束布局
TextView控件
Button控件
RadioButton控件
AlertDialog对话框
Activity
Broadcast
数据库调试
✦
05
视频讲解
扫码即可观看视频,限时免费3天
06
参考书籍
《Android项目开发基础与实战(微课视频版)》
作者:夏江
定价:59.9元
内容简介
本书结合作者多年讲授“Android应用软件开发”课程的教学经验,融入Android开发领域新技术,较为全面地介绍了Android应用软件开发的相关知识点和开发技巧。全书共分5章,分别介绍了Android开发环境、Android项目及Java基本概念、Android常用布局、Android常用控件和其他常用编程技术。本书相关案例以Android Studio为开发环境,尽可能使用最新版本SDK命令替代弃用命令,并对控件的版本变化做大致的介绍。本书全面考虑了本科教学的特点,结合作者开发的案例库教学辅助系统,通过精心设计的案例和详尽的讲解、演示,让读者感受体验式教学的魅力。本书适合Android Studio开发人员、Android的入门读者、高等学校学生使用,还可以作为高等院校、相关培训机构的教学用书。
07
精彩推荐
微信小程序游戏开发│猜数字小游戏(附源码+视频)
Flink编程基础│Scala编程初级实践
Flink编程基础│FlinkCEP编程实践
Flink编程基础│DataStream API编程实践
Flink编程基础│DataSet API编程实践
数 据分析实战│客户价值分析
数据分析实战│价格预测挑战
数据分析实战│时间序列预测
数据分析实战│KaggleTitanic生存预测