Java面向对象学习笔记-1

前言

“Java 学习笔记” 是为初学者和希望加深对Java编程语言的理解的人们编写的。Java是一门广泛应用于软件开发领域的强大编程语言,它的语法和概念对于初学者来说可能有些复杂。这份学习笔记的目的是帮助读者逐步学习Java的基本概念,并提供了一系列示例代码,以便更好地理解这些概念。无论您是想成为一名Java开发者,还是只是对编程感兴趣,这份学习笔记都将为您提供有价值的信息和指导。

摘要

Dog 类

package cn.qq.xiangmu.entity;

public class Dog {
    private String name;
    private int health;
    private int love;
    private String strain;

    // 个人建议,没有什么特殊要求时,提供无参和满参构造函数即可

    // 默认系统会提供一个无参的公有的没有什么内容的构造函数
    public Dog() {
        //this("匿名", 50, 50, "土狗"); // 构造函数的调用,必须在函数体的第一行。不允许递归死循环调用。实际开发很少使用!
    }

    // 如果自定义了有参构造函数,系统就不再提供无参构造函数
    public Dog(String name, int health, int love, String strain) {
        //this(); // 构造函数的调用,必须在函数体的第一行。不允许递归死循环调用。实际开发很少使用!
        this.name = name;
        this.health = health;
        this.love = love;
        this.strain = strain;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        if (health < 0) health = 0;
        if (health > 100) health = 100;
        this.health = health;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        this.love = love;
    }

    public String getStrain() {
        return strain;
    }

    public void setStrain(String strain) {
        this.strain = strain;
    }

    public void print() {
        System.out.println("宠物的自白");
        System.out.println("我的名字叫"+name+",健康值是"+health+",和主人的亲密度是"+love+",我是一只"+strain);
    }
}

  • Dog 类表示一只狗,包括名称、健康值、亲密度和品种等属性。
  • 通过构造函数,可以初始化这些属性。
  • 提供了 getter 和 setter 方法,以便访问和修改这些属性。
  • print 方法用于打印狗的信息。

Penguin 类

package cn.qq.xiangmu.entity;

public class Penguin {
    // 常量的定义 可以参考 Integer.MAX_VALUE
    public static final String SEX_MALE = "Q仔";
    public static final String SEX_FEMALE = "Q妹";
    private String name;
    private int health;
    private int love;
    private String sex;

    public Penguin() {
    }

    public Penguin(String name, int health, int love, String sex) {
        this.name = name;
        this.health = health;
        this.love = love;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        if (health < 0) health = 0;
        if (health > 100) health = 100;
        this.health = health;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        this.love = love;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void print() {
        System.out.println("宠物的自白");
        System.out.println("我的名字叫"+name+",健康值是"+health+",和主人的亲密度是"+love+",性别是"+sex);
    }
}

  • Penguin 类表示一只企鹅,包括名称、健康值、亲密度和性别等属性。
  • 通过构造函数,可以初始化这些属性。
  • 提供了 getter 和 setter 方法,以便访问和修改这些属性。
  • print 方法用于打印企鹅的信息。
  • 类中定义了常量字段 SEX_MALESEX_FEMALE 用于表示企鹅的性别。

Xxx 类

package cn.qq.xiangmu.entity;

public class Xxx {
    public int a1 = 1;
    public static int a2 = 2;

    public Xxx() {
        System.out.println("Xxx()构造函数");
    }

    public Xxx(int a1) {
        System.out.println("Xxx(int)构造函数");
        this.a1 = a1;
    }

    public void f1() {
        System.out.println("f1(): " + this.a1 + Xxx.a2);
        Xxx.f2();
    }

    public static void f2() {
        System.out.println("f2(): " + Xxx.a2);
    }
}

  • Xxx 类包含了一个实例变量 a1 和一个静态变量 a2
  • 通过构造函数,可以创建 Xxx 类的实例并初始化实例变量。
  • f1 方法是实例方法,用于打印实例变量 a1 和静态变量 a2 的值。
  • f2 方法是静态方法,用于打印静态变量 a2 的值。

Yyy 类

package cn.qq.xiangmu.entity;

public class Yyy {
    int a1;
    public static int a2;

    public Yyy() {
        a1 = 10;
    }

    {
        // 代码块 构造了n次对象前,默认就会自动调用n次
        a1++;
    }

    static {
        // 静态代码块 该类有访问就唯一调用一次
        a2++;
    }

    public void f1() {
        System.out.println(a1);
    }
}

  • Yyy 类包含了一个实例变量 a1 和一个静态变量 a2
  • 构造函数初始化实例变量 a1
  • 类中包括实例初始化块,这些块在创建对象之前自动执行。
  • 类还包括静态初始化块,这些块在类加载时执行,仅执行一次。
  • f1 方法用于打印实例变量 a1 的值。

Demo01 类

package cn.qq.xiangmu.test;

import cn.qq.xiangmu.entity.*;

public class Demo01 {
    public static void main(String[] args) {
        Dog dog = new Dog("欧欧", 100, 0, "德国牧羊犬");
        System.out.println(Penguin.SEX_FEMALE);
        Penguin penguin = new Penguin("美美", 90, 10, Penguin.SEX_FEMALE);
        dog.print();
        penguin.print();
    }
}

  • 包含一个 main 方法,演示了如何使用 DogPenguin 类创建实例并打印它们的信息。

Demo02 类

package cn.qq.xiangmu.test;

import cn.qq.xiangmu.entity.Xxx;

public class Demo02 {
    public static void main(String[] args) {
        Xxx xxx1 = new Xxx(1111);
        Xxx xxx2 = new Xxx(11111);
        System.out.println(xxx1.a1);
        System.out.println(xxx2.a1);
        xxx1.f1();
        xxx2.f1();
        Xxx.a2 = 22;
        Xxx.f2();
    }
}

  • 包含一个 main 方法,演示了如何使用 Xxx 类创建实例、调用方法以及修改静态变量。

Demo03 类

package cn.qq.xiangmu.test;

import cn.qq.xiangmu.entity.Yyy;

public class Demo03 {
    public static void main(String[] args) {
        System.out.println(Yyy.a2);
        System.out.println(Yyy.a2);
    }
}

  • 包含一个 main 方法,演示了如何使用 Yyy 类访问其静态变量 a2

总结

在这份学习笔记中,我们深入研究了Java编程语言的关键概念。我们了解了如何创建类、初始化实例变量和静态变量、定义方法以及使用构造函数。通过示例类和测试类,我们演示了如何将这些概念应用于实际编程情境,并加深了对Java面向对象编程的理解。我们鼓励读者不仅仅是阅读示例代码,而是积极地亲自动手练习,以巩固所学知识。

你可能感兴趣的:(从零开始学JAVA,python,开发语言)