专业的JAVA编程教程与资源

网站首页 > java教程 正文

全网最完整的免费java教程讲义系列(八)——面向对象.封装

temp10 2024-11-13 12:41:58 java教程 11 ℃ 0 评论

老K的Java基础课程又更新啦!!!

上一期的课程内容,我们讲到了Java基础知识面向对象中的

全网最完整的免费java教程讲义系列(八)——面向对象.封装

有了的知识作为基础,我们今天就要来介绍面向对象的一些特性了。

我们都知道,Java面向对象编程有三大特性:

  • 继承
  • 封装
  • 多态

面向对象的封装继承多态三大特征中,封装是后两者的基础

封装是隐藏类中的某些细节和信息,通过提供方法对这部分信息进行访问和操作。

本次的课程,我们将从头开始,循序渐进,先来介绍Java面向对象——封装部分的知识。


需要翻看前面内容的,可以点击下面的链接:

  1. 老K玩代码:全网最完整的免费java教程讲义系列(一)——java配置和安装
  2. 老K玩代码:全网最完整的免费java教程讲义系列(二)——java数据和变量
  3. 老K玩代码:全网最完整的免费java教程讲义系列(三)——java的运算符
  4. 老K玩代码:全网最完整的免费java教程讲义系列(四)——java的流程控制
  5. 老K玩代码:全网最完整的免费java教程讲义系列(五)——java数组详解
  6. 老K玩代码:全网最完整的免费java教程讲义系列(六)——java方法详解
  7. 老K玩代码:全网最完整的免费java教程讲义系列(七)——面向对象.类

一、实现方法

  1. private作为属性的访问修饰符。
  2. 创建公有(public)getter/setter方法。
  3. 在方法中加入控制语句。

二、示例代码

请在IDEA的Sportman.javaTest.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,在弹出的界面中点选GetterSetterGetter 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玩代码,会持续生产关于如何学习编程语言的优质内容。

如果你想学习编程,或者想精进你的编程能力,可以关注我。

如果你对开发、编程有任何疑问或有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。


#头条创作挑战赛#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表