JAVA系统复习(基础语法-类、接口)

类和对象的概念

**类:**有点像英语的泛指 / 非特指(a / 泛指名词),比如:人类、男人、女人、爸爸、妈妈、动物、猫、狗......

**对象:**有点像英语的特指(the / 具体个体),比如:你的爸爸、我的爸爸、你的女朋友、我的女朋友、你家的具体某个宠物猫、你家的具体某个宠物狗......

一般是new出来的,经常开玩笑的梗:被催婚或者问婚育情况的时候说那需要先new个对象......

**属性:**静态的,大概是名词、形容词、数量词

**方法:**动态的,大概是动词

类的定义

java 复制代码
访问修饰符 Class 类名{
    成员变量......
    成员方法......
}

拿动物举例Animal、mammal、cat、dog

java 复制代码
// 动物 抽象类
public abstract class Animal {
    // 抽象方法:动物叫,没有方法体
    public abstract void shout();

    // 普通方法
    public void eat() {
        System.out.println("动物需要吃东西");
    }
}


// 哺乳动物 继承 动物
public class Mammal extends Animal {

    // 重写父类抽象方法
    @Override
    public void shout() {
        System.out.println("哺乳动物发出叫声");
    }

    // 自有方法
    public void breastFeed() {
        System.out.println("哺乳动物:母乳喂养");
    }
}

// 奔跑行为规范
public interface Run {
    void run();
}

// 游泳行为规范
public interface Swim {
    void swim();
}

// 宠物行为规范
public interface Pet {
    void play();
}

// 1个直接父类 Mammal
// 多个接口用逗号分隔:implements Run, Pet
public class Cat extends Mammal implements Run, Pet {

    // 必须重写 父类抽象方法
    @Override
    public void shout() {
        System.out.println("猫:喵喵");
    }

    // 必须重写 Run 接口方法
    @Override
    public void run() {
        System.out.println("猫咪会跑");
    }

    // 必须重写 Pet 接口方法
    @Override
    public void play() {
        System.out.println("猫咪玩玩具");
    }
}

// 狗 继承 哺乳动物
public class Dog extends Mammal implements Run, Swim, Pet {

    @Override
    public void shout() {
        System.out.println("小狗:汪汪汪");
    }

    // 必须重写 Swim接口方法
    @Override
    public void swim() {
        System.out.println("小狗会游泳");
    }

    // 必须重写 Run 接口方法
    @Override
    public void run() {
        System.out.println("小狗会跑");
    }

    // 必须重写 Pet 接口方法
    @Override
    public void play() {
        System.out.println("小狗玩玩具");
    }
}
java 复制代码
public class TestAnimal {
    public static void main(String[] args) {
        // 1. 子类对象
        Cat cat = new Cat();
        Dog dog = new Dog();

        cat.eat();        // 继承自 Animal
        cat.breastFeed(); // 继承自 Mammal
        cat.shout();      // 自己重写
        cat.run();
        cat.play();

        System.out.println("--------");

        dog.eat();
        dog.breastFeed();
        dog.shout();
        dog.run();
        dog.swim();
        dog.play();

        // 2. 多态:父类引用指向子类对象
        Animal a1 = new Cat();
        Animal a2 = new Dog();
        a1.shout();
        a2.shout();
    }
}

运行结果:

动物需要吃东西

哺乳动物:母乳喂养

猫:喵喵

猫咪会跑

猫咪玩玩具


动物需要吃东西

哺乳动物:母乳喂养

小狗:汪汪汪

小狗会跑

小狗会游泳

小狗玩玩具

-------- 多态 --------

猫:喵喵

小狗:汪汪汪


java 类继承的关键字 extends ,只能单继承,不过可以用 implements 实现多个接口

(python继承是直接把父类当参数传,支持多继承)

java 还有抽象类,抽象方法,用 abstract 装饰

(待续)

相关推荐
heimeiyingwang2 分钟前
【架构实战】可观测性三支柱实战:Metrics、Logging、Tracing 如何统一落地
开发语言·架构·php
步行cgn10 分钟前
MyBatis 一对多关联映射详解
java·后端
用户31268748772015 分钟前
线程池到底怎么调?从源码看懂 ThreadPoolExecutor 的 7 个参数
java
caimouse23 分钟前
ReactOS 图形系统分析(53):系统库存对象 — stockobj.c
c语言·开发语言·spring
SQL-First布道者37 分钟前
持久层框架的评价标准:只有一个
java·spring boot·spring·tomcat·mybatis·spring jdbc
孔明click3341 分钟前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·sa-token·开源·springboot·权限认证
ZJU_统一阿萨姆1 小时前
【推理优化进阶】通信关键路径:NCCL、RDMA 与计算通信重叠
开发语言·人工智能·语言模型·架构·系统架构
m0_587383001 小时前
智慧场馆解决方案实战指南:从系统架构到落地部署全解析
java·spring boot·架构·系统架构
我不是疯子是傻子1 小时前
Qt 程序打包部署全攻略:从 windeployqt 到 Inno Setup 的静默安装与版本迭代实战
开发语言·qt
ZC跨境爬虫1 小时前
LeetCode 13. 罗马数字转整数(多解法详解 + Java Python 实现)
java·python·leetcode