Java面向对象从0到1(上)

用Java编写类的教程。

微信搜索关注《Java学研大本营》,加入读者群,分享更多精彩

什么是类

类是我们面向对象语言代码的构建块,因为我们的程序是作为类系统编写的。类本质上是创建类似对象的蓝图。例如,你可以有一个类“fruit”,然后有那个类的实例来表示“apple”和“orange”。

类定义数据

类让我们定义复杂的数据类型来表示我们程序中的事物,我们如何做到这一点的一部分是通过属性。属性就像让我们存储值的内部变量。对象是有状态的,这意味着它们包含的值可以在不创建全新对象的情况下进行修改。这方面的一个例子是,如果你有一个“汽车”类,你可以有像“速度”、“品牌”和“型号”这样的属性

类定义行为

类不只是定义数据,与作为简单数据点的原始类型不同,类封装数据和行为。这意味着对象可以拥有数据,并且还可以在内部使用该数据进行操作。在编写类时,我们将这些编写为方法;它们本质上是让我们使用或修改对象内部状态的函数。因此,如果您有一个“汽车”类,您可以使用“加速”和“制动”等方法来表示汽车可以做的事情。

类的语法

类是使用 class 关键字定义的,属性和方法可以按任何顺序定义,但这是标准的

class Example {
    // attributes
    int x = 3;
    int y = 2;

    // methods
    public int sum() {
        return x+y;
    }

    public int difference() {
        return x-y;
    }
}

类的属性

属性是类的重要组成部分,因为它们定义了我们处理的数据,而属性是非常基本的并且类似于变量,但它们有一些应该注意的重要区别。属性必须有定义的类型,但它可以是泛型类型,它们总是在它们定义的类中的任何地方都可以访问,但是可以使用许多修饰关键字修改行为。

公共和私有属性

两个最常见的属性修饰符是 public 和 private。这些概念非常简单,但非常重要。使用公共属性,任何外部对象都可以访问该值,例如,如果我有一个具有属性“a”的对象,任何其他对象都可以读取或更改“a”的值这通常是不可取的,因为我们想要封装我们的状态远离程序的其余部分。由于这个原因,java 中的大多数属性都应该是私有的,我们通常会编写方法来根据需要读取和更改这些属性。这可以防止可能危及安全或导致不良影响的意外行为。

静态属性

常规属性属于从类创建的对象,而静态属性属于类本身。通过这种方式,您可以获得在同一类型的所有对象之间同步的值。例如,如果你想给特定类型的每个对象一个唯一的 ID,你可以为 ID 设置一个静态属性,然后在创建该类型的对象时使用它并递增它。这样每个对象都会有一个唯一的 ID,没有间隙或重叠。

最终属性

最终属性是 Java 版本的不可变属性。虽然普通属性可以被分配任意次数,但最终属性在对象的生命周期内只能分配一次。例如,如果你想要一个唯一的 ID,你会希望它是一个最终变量,因为该对象的 ID 应该永远不会改变。值得一提的是,final 变量仍然可以指向可变对象,例如,如果您有一个 final ArrayList,该 List 中的值仍然可以更改,您只是不能将其分配给一个全新的对象。(由于我生锈的背景,我倾向于默认将我的所有属性写为 final 以防止不必要的行为,但这在 java 社区中并未被普遍接受。)

属性的语法

public class Example {
    // this variable can be accessed by the outside freely
    public int a = 5;

    // this variable can never be reassigned
    private final String b = "Something";

    // this attribute is the same across all objects of this type
    private static double c = 19.2;

    // modifiers can be combined to enrich behavior
    // except private and public which are mutually exclusive
    public static final boolean d = true;
}

方法

Java 中的方法使类特别有用,在 C 和 Go 等其他语言中,我们有称为结构的复杂类型,但它们只是数据类型。通过定义方法,我们能够为我们的对象添加内置行为,允许它们对我们定义的数据进行操作。方法允许一些不同的东西,比如参数和返回值,这使我们能够将它们扩展为非常灵活。与属性一样,方法可以是公共的、私有的或静态的。还有一些称为构造函数的特殊方法,用于在从类初始化对象时运行代码。

方法参数

有时我们想在我们的方法中使用对象属性以外的数据,我们通过使用方法参数来实现,参数允许我们传入一个值以供方法临时使用,这是通过以下语法完成的:

class MyClass {
    // this is the syntax for a method
    public void doSomething(String word) {
        // do something with the word parameter
        System.out.println(word);
    }
}

// the parameter is passed into the parameters
new MyClass().doSomething("cat");

方法返回值

方法在调用时也可以返回值,这使我们能够从对象中获取信息。返回值必须在方法声明中指定,如果返回值不是“void”,那么所有可能的执行路径都必须返回一个值,即使它是 Null。您可以在此处查看方法返回的语法:

class MyClass {
    // the int type in front of the method name states the return value
    // if this is void there is no return value
    public int getSomething() {
        return 5; // the return statement returns the value
    }
}

// we can get the value by calling the method on an object
int myInt = new MyClass().getSomething();

访问器和修改器

因为属性通常是私有的,我们需要一些方法来继续使用它们,这是通过方法完成的,称为访问器和修改器,访问器是一种从类内部获取一些信息并将其提供给调用者的方法,以及修改器是一种改变对象内部状态的方法。两种最简单的访问器和修改器称为 getter 和 setter,其中 getter 只是获取属性值并将其返回给调用者,而 setter 将值作为参数并将内部属性设置为该值。以下是 getter 和 setter 的示例:

class Example {
    // this private attribute cannot be accessed
    private int a = 5;

    // this is a getter accessor
    public int getA() {
        return a;
    }

    // this is a setter mutator
    public void setA(int newValue) {
        a = newValue
    }
}

推荐书单

《项目驱动零起点学Java》

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

马士兵,马士兵教育创始人,毕业于清华大学,著名IT讲师,所讲课程广受欢迎,学生遍布全球大厂,擅长用简单的语言讲授复杂的问题,擅长项目驱动知识的综合学习。马士兵教育获得在线教育“名课堂”奖、“最受欢迎机构”奖。

赵珊珊,从事多年一线开发,曾为国税、地税税务系统工作。拥有7年一线教学经验,多年线上、线下教育的积累沉淀,培养学员数万名,讲解细致,脉络清晰。

《项目驱动零起点学Java》(马士兵,赵珊珊)【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《项目驱动零起点学Java》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N4P3https://item.jd.com/13607758.html

精彩回顾

部署Spring Boot应用程序

Java Spring Boot 3.0.0 RC1 震撼登场!

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值