Java基础-Java后端漫漫长路的伊始(1)
本文最后更新于 271天前,其中的信息可能已经有所发展或是发生改变。若对文章内容存疑,或是本文的转载部分侵犯了您的权益,请联系博主 3240572824@qq.com

我与Java,起源于游戏Minecraft(我的世界)。

很早之前,早在从没想过有一天会接触代码时,就喜欢玩我的世界这款游戏,当时是用手机玩的Bedrock Edition 基岩版(现在了解到此版本基于C++开发),与电脑上的Java Edition Java版(基于Java开发)有小的差异,那时候就羡慕得不行,想着哪天一定要有台电脑玩上Java版本……于是Java之路开始了。

多的就不说了,后来就理所应当的“喜欢上了Java”,整个Java基础应该花了几个月,在阿玮老师的视频下,学习过程可以称得上是十分愉悦的。下面是我的含源码笔记(目录均以英文命名,可能会造成一定阅读障碍),以及对整个过程大致的复盘小结。

建议使用IDE打开文件夹,以展现文件的上下关系

如上图所示,我又将Java基础按自己的理解分为了Java入门和Java进阶。

首先是Java入门,最最基础的概念以及循环、判断等就不再赘述了。

数组

数组作为Java最基本的数据容器(数据结构)之一,可用于存储相同类型的多个元素。它与其他编程语言中数组的最大差别就是,数组中的数据是引用数据类型,是数据在内存中的地址值,而非数据值本身。

方法

方法是一段可重用的代码块,用于执行特定的任务。

public static 返回值类型 方法名(参数){
    方法体;
    return 返回值;
        }

上面就是方法的定义格式,作为一种强类型语言,Java的方法要求返回值类型与返回值一致,若方法无返回值,则类型为void(如下)。

有阿玮老师这样的教程,能无聊?

方法的重载 Overload

在封装类的过程中出现了多个同名的方法,但方法的参数表不同,就叫方法重载。

public void playGame() {
    System.out.println("选人物");
    System.out.println("准备开局");
    System.out.println("对线");
    System.out.println("崩盘");
    System.out.println("骂队友");
    System.out.println("送人头");
    System.out.println("GG");
}

public void playGame(String name) {
    System.out.println("选人物" + name);
    System.out.println("准备开局");
    System.out.println("对线");
    System.out.println("崩盘");
    System.out.println("骂队友");
    System.out.println("送人头");
    System.out.println("GG");
}

public void playGame(String name, int num) {
    System.out.println("选人物" + name);
    System.out.println("准备开局");
    System.out.println("对线");
    System.out.println("崩盘");
    System.out.println("骂队友");
    System.out.println("送人头" + num + "个");
    System.out.println("GG");
}

方法的重写 Override

在继承体系中,子类拥有与父类方法名相同,且参数数量、类型也相同的方法,就叫方法重写。

class Player {
    public void playGame() {
        System.out.println("选人物");
        System.out.println("准备开局");
        System.out.println("对线");
        System.out.println("崩盘");
        System.out.println("骂队友");
        System.out.println("送人头");
        System.out.println("GG");
    }
}

class YaLiGuai extends Player {
    public void playGame() {
        System.out.println("选人物");
        System.out.println("骂队友");
        System.out.println("送人头");
        System.out.println("GG");
    }
}
图片转载自CSDN,文章末尾已标明出处

面对对象

面对对象三大特征

封装

将一个对象的“属性”(成员变量)及“行为“(方法)包装成一个独立的“个体”(类),目的是既安全又便捷地对此类进行后续操作。

例如,定义一个类:猫,则其属性可以有姓名、年龄、体重等等,行为吃喝拉撒睡……根据实际需要。

标准类 JavaBean
  • 成员变量用private修饰
  • 为每个成员变量写一对get/set方法
  • 一个无参的构造方法
  • 一个全参的构造方法

JavaBean即是封装原则的体现。如下是一个猫类的JavaBean示例

class Cat {
    private String name;
    private int age;
    private double weight;

    public Cat() {
    }// 无参构造

    public Cat(String name, int age, double weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }// 全参构造

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public void huntMouse() {
        System.out.println("猫捉老鼠");
    }


}

抽象类

拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。例如上文提到的,若猫类的行为方法中有一个抽象方法如下,则此猫类称作抽象类。

public abstract void eat();//抽象方法,没有{}方法体,且由abstract关键字做修饰

继承

多个类之间建立的“父子关系”,目的是将多个子类的重复“属性、行为”抽取到父类中,提高代码复用性。

public class Cat extends Animal {}

其中的Cat即为子类,继承自父类Animal。很好理解,猫隶属于动物,动物也可以有上述的属性、行为,而猫可以有如“抓老鼠”这种独有的行为,于是可以独自封装一个方法“抓老鼠”,这就是继承的另一个作用,强化子类功能。

又根据实际情况的不同,可分为单继承与多继承。特别地,若父类是一个抽象类,则其正常的子类需重写其全部抽象方法。

多态

同类型的对象,表现出不同的形态。目的是使用父类型作为参数,接收所有子类对象,体现多态的扩展性与便利性。

前提:

  • 有继承/实现关系
  • 有父类引用指向子类对象
  • 有方法的重写
父类类型 对象名称 = 子类对象;
例如:

class Animal {
    public void sound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("狗汪汪");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("猫喵喵");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a1 = new Dog();
        Animal a2 = new Cat();
        
        a1.sound(); // 输出:狗汪汪
        a2.sound(); // 输出:猫喵喵
    }
}

即在符合前提的情况下,通过传入不同子类可以创建实现同方法不同功能的实例对象。

接口 Interface

下图生动地诠释了接口的定义与作用。

图片截自b站阿玮老师的Java课程视频,文章末尾已标明出处

接口与类之间是实现关系,由implements关键字表示

public interface 接口名 {} // 关键字interface用于定义接口,类似于class关键字
public class 类名 implements 接口名 {}

相关链接

评论

  1. 蜗嫩爹
    Android Chrome
    9 月前
    2023-8-27 10:35:30

    666

    来自山西

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇