java从入门到精通之面向对象(全网最完整的免费java教程讲义系列)
java从入门到精通之面向对象(全网最完整的免费java教程讲义系列)请在IDEA的Sportman.java和Test.java文件中,根据下述代码做出相应修改:需要翻看前面内容的,可以点击下面的链接:面向对象的封装、继承和多态三大特征中,封装是后两者的基础。封装是隐藏类中的某些细节和信息,通过提供方法对这部分信息进行访问和操作。本次的课程,我们将从头开始,循序渐进,先来介绍Java面向对象——封装部分的知识。
序老K的Java基础课程又更新啦!!!
上一期的课程内容,我们讲到了Java基础知识面向对象中的类。
有了类的知识作为基础,我们今天就要来介绍面向对象的一些特性了。
我们都知道,Java面向对象编程有三大特性:
- 继承
- 封装
- 多态
面向对象的封装、继承和多态三大特征中,封装是后两者的基础。
封装是隐藏类中的某些细节和信息,通过提供方法对这部分信息进行访问和操作。
本次的课程,我们将从头开始,循序渐进,先来介绍Java面向对象——封装部分的知识。
需要翻看前面内容的,可以点击下面的链接:
- 老K玩代码:全网最完整的免费java教程讲义系列(一)——java配置和安装
- 老K玩代码:全网最完整的免费java教程讲义系列(二)——java数据和变量
- 老K玩代码:全网最完整的免费java教程讲义系列(三)——java的运算符
- 老K玩代码:全网最完整的免费java教程讲义系列(四)——java的流程控制
- 老K玩代码:全网最完整的免费java教程讲义系列(五)——java数组详解
- 老K玩代码:全网最完整的免费java教程讲义系列(六)——java方法详解
- 老K玩代码:全网最完整的免费java教程讲义系列(七)——面向对象.类
一、实现方法
- 以private作为属性的访问修饰符。
- 创建公有(public)的getter/setter方法。
- 在方法中加入控制语句。
二、示例代码
请在IDEA的Sportman.java和Test.java文件中,根据下述代码做出相应修改:
Sportman.java
public class Sportman {
// 对象属性声明
// 1. age的访问权限设为private
String name;
private int age;
int height;
float weight;
String event;
public Sportman(String name int age int height float weight String event) {
this.name = name;
// 使用setAge为属性age赋值
this.setAge(age);
this.height = height;
this.weight = weight;
this.event = event;
System.out.println("构造方法提示:" this.event "运动员" this.name "生成成功。");
}
// 2. 设置age的setter方法
public void setAge(int age) {
// 3. 方法中的控制语句
if (age >= 14) {
this.age = age;
}
}
// 2. 设置age的getter方法
public int getAge() {
// 3. 方法中的控制语句
return this.age;
}
}
Test.java
public class Test {
public static void main(String[] args) {
Sportman yaoming = new Sportman();
yaoming.name = "姚明";
yaoming.setAge(42); // 使用age的setter方法给属性赋值
yaoming.height = 226;
yaoming.weight = 140.6f;
yaoming.event = "篮球";
// 使用age的getter方法获取属性
System.out.println(yaoming.name "是一名" yaoming.event "运动员,身高" yaoming.height "公分 体重" yaoming.weight "公斤 今年" yaoming.getAge() "岁。");
yaoming.train();
}
}
- 上例中,给age设置了必须大于14的控制逻辑,大家可以在Test里尝试更改不同的年龄,查看效果。
- 执行代码的时候,注意一下单行中的注释行,以便更好地理解项目和代码。
- 另外,IDEA也为大家提供了自动设置getter/setter的方法,操作如下:光标移动到在需要插入getter/setter方法的位置,输入Alt Insert,在弹出的界面中点选Getter、Setter或Getter and Setter选项,选择相应的模板和参数,就能批量自动生成getter/setter方法函数了。
菜单
三、package/包
包是用来管理同类型java文件的集合,解决同名文件冲突的问题,基本语法是package包名。
- Java中,一个包下面不能有相同名称的类文件。
- 包的命名建议:域名的倒置 功能模块名,如:com.zhihu.question.annoncement。
- java文件第一行用来定义包名,如:package com.zhihu.question.annoncement。
- 导入包的语法为import 包名 ,这里的包名可以是具体的包名,也可以用路径.*的方式匹配该路径下的所有子一级java文件,如:com.zhihu.question.annoncement.*。
四、static关键字
添加了static修饰词的属性和方法,其执行的代码对该类的全体实例都生效。
修改一个实例下的static属性,会立即对其它实例生效,因为所有实例的static属性都共用共享同一块内存空间。
示例:
请在IDEA中创建下述文件并复制相应代码,执行并查看结果。
Sportman.java
public class Sportman {
// 对象属性声明
String name;
int age;
int height;
float weight;
static String event;
//带参构造方法
public Sportman(String name int age int height float weight String event) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
this.event = event;
}
}
Test.java
public class Test {
public static void main(String[] args) {
// 通过无参构造方法实例化对象
Sportman yaoming = new Sportman("姚明" 42 226 140.6f "篮球");
// 调用对象属性和方法
System.out.println(yaoming.name "从事的体育项目是" yaoming.event);
System.out.println("===========================");
// 通过带参构造方法实例化对象
Sportman liuxiang = new Sportman("刘翔" 1 1 87f "跨栏");
// 调用对象属性和方法
System.out.println(liuxiang.name "从事的体育项目是" liuxiang.event);
System.out.println("与此同时,由于event是static静态属性,所有sportman公用一个event,所以设置刘翔的体育项目,其实就是改动公用的那个event");
System.out.println("由于公用的唯一event值变更,此时" yaoming.name "的体育项目也成为了" yaoming.event);
}
}
情形 |
名称 |
调用方法 |
示例 |
static加在属性前 |
类属性/静态属性 |
类名.属性 |
Sportman.name |
static加在方法前 |
类方法/静态方法 |
类名.方法名() |
Sportman.run() |
- 其实类方法/属性也可以通过实例进行访问和调用,但java规范并不推荐这种操作方式。
- 静态方法中不能调用非静态方法和this关键字。
- static定义的类属性/静态属性公用同一个内存空间,这个概念比较抽象,但十分重要,请务必深刻领会,建议不懂的地方可以查阅资料(static_百度百科)或者直接咨询我(全网同名:老K玩代码)。
以上就是Java面向对象——封装部分的内容,有关Java的学习教程我会持续更新。
如果你正在学习Java,希望了解更多关于Java或其他编程语言的内容,可以关注我或者收藏这篇文章。
除了老K分享的课程之外,想自学Java的小伙伴,也可以看看以下两本有关Java编程的书籍。
第一本《On Java》是Java编程的圣经。书的内容详实,循序渐进。基础卷适合初学者,上手容易;进阶卷适合想要精进Java编程技术的朋友。
第二本《Java面向对象编程》是针对近期分享的Java面向对象的内容,有基础知识的介绍,也会结合实例,更方便理解。
- 《On Java》,豆瓣读书评分:9.0 ★★★★★
作者 Bruce Eckel是在硅谷成名已久的大牛,其早年的《Java 编程思想》可谓是Java编程圣经。如今的这部书亦是他呕心沥血之作,增加了很多近期java版本的特性,更适合当下。全书两册,分为基础卷和进阶卷。基础卷对新手友好,循序渐进;进阶卷内容详实、步步为营。
- 《Java面向对象编程》,豆瓣读书评分:7.7 ★★★★
关于Java面向对象的部分,我推荐的书目是孙卫琴的《Java面向对象编程》一书。本书深入浅出,结合实例,在大量典型案例中讲解Java面向对象相关的知识。推荐重点第一章,面向对象的基础知识在这本书里讲得非常清晰。
结束语
我是专注于开发领域的@老K玩代码,会持续生产关于如何学习编程语言的优质内容。
如果你想学习编程,或者想精进你的编程能力,可以关注我。
如果你对开发、编程有任何疑问或有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
#头条创作挑战赛#