24/03/28总结

news2024/11/26 16:54:31

抽象类:

将共性的方法抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
而为什么不直接在子类中定义方法:项目的完成不是一个人,如果有时忘记写方法重写,抽象类就会报错,没有抽象类不会报错
抽象方法的定义格式:
public abstract 返回值类型 方法名(参数列表);
抽象类的定义格式:
public abstract   class 类名{}
抽象类练习:

练习思路:定义父类Animal,青蛙,狗,山羊的属性:名字,年龄,行为:喝水都可以继承于父类Animal,行为吃的内容都不相同,在父类定义抽象类,子类中写出个子吃的行为 

package demo7test;

public abstract class Animal {        //有抽象方法的类一定是抽象类,不是抽象会报错
    private String name;
    private  int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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 void drink(){
        System.out.println("动物在喝水");
    }

    public abstract void eat();    //父类吃为抽象类

}
package demo7test;

public class Dog extends Animal{
        //抽象类的子类
        //1.要么重写抽象类的所有抽象方法(一般用这个)
        //2.要么是抽象类(因为抽象类不能创建对象,要想创建只能再弄一个子类所以一般都用方法一)
    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {        //重写抽象类的所有方法
        System.out.println("狗在吃骨头");
    }

}
package demo7test;

public class Frog extends Animal{
    public Frog() {
    }

    public Frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("青蛙在吃虫子");
    }


}
package demo7test;

public class Sheep extends Animal{
    public Sheep() {
    }

    public Sheep(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("山羊在吃草");
    }
}

测试类:

package demo7test;

public class test {
    public static void main(String[] args) {
        Dog dog = new Dog("小黑", 5);
        System.out.println(dog.getName() + ", " + dog.getAge());
        dog.eat();
        dog.drink();

        Frog frog = new Frog("小蛙", 3);
        System.out.println(frog.getName() + ", " + frog.getAge());
        frog.eat();
        frog.drink();
    }
}

代码输出:

 

接口: 

有多个处于继承中子类的类里有共性行为却不是所有子类都有时就需要接口,如果只是在子类中写的话会不统一方法名所以就要用接口来统一
接口的定义和使用:
接口用关键字interface来定义  public interface 接口名 {}
接口不能实例化
接口和类之间是实现关系,通过implements关键字表示  public class 类名 implements 接口名 {}
注意1:接口和类的实现关系,可以单实现,也可以多实现:
    public class 类名 implements 接口名1,接口名2 {}
注意2:实现类还可以在继承一个类的同时实现多个接口:
    public class 类名 extends 父类 implements 接口名1,接口名2 {}

接口练习:

 练习思路:可以看到三种动物的行为中并不是所有类都会游泳这种行为,因为拥有行为的类不止一个所以要定义一个游泳接口

package demo7test;

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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 abstract void eat();    //对于吃行为抽象化
}
package demo7test;

public class Dog extends Animal implements Swim{    //狗需要游泳接口
    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("青蛙吃虫子");
    }

    @Override
    public void swim() {
        System.out.println("狗在狗刨");
    }
}
package demo7test;

public class Frog extends Animal implements Swim{    //青蛙需要游泳接口
    @Override
    public void eat() {
        System.out.println("青蛙在吃虫子");
    }

    @Override
    public void swim() {
        System.out.println("青蛙在蛙泳");
    }
}
package demo7test;

public class Rabbit extends Animal{
    public Rabbit() {
    }

    public Rabbit(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("兔子在吃胡萝卜");
    }
}
package demo7test;

public interface Swim {        //接口
 //成员方法:可以是抽象方法(目前只知道这个)(默认修饰符:public abstract(你不写也可以因为是默认的,两个混合)),有方法体的方法,私有方法
        public abstract void swim();    
}

测试类:

package demo7test;

public class test {
    public static void main(String[] args) {
        Dog dog = new Dog("小黑", 3);
        System.out.println(dog.getName() + ", " + dog.getAge());
        dog.eat();
        dog.swim();

        Rabbit rabbit = new Rabbit("小白",2);
        System.out.println(rabbit.getName()+", "+rabbit.getAge());
        rabbit.eat();


    }

}

可以看到兔子并没有游泳行为 

 

输出结果: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1554051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaEE 初阶篇-深入了解多线程等待与多线程状态

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 线程等待 1.1 线程等待 - join() 方法 1.1.1 main 线程中等待多个线程 1.1.2 main 线程等待 t2 线程且t2 线程等待 t1 线程 1.1.3 其他线程阻塞等待 main 线程 1.…

解决 linux 服务器 java 命令不生效问题

在Linux系统中,当你安装Java并设置了JAVA_HOME环境变量后,你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件,它包含了系统的全局环境变量设置。 但是需要注意的是,source /e…

防水游泳耳机有哪些?四款口碑销量双丰收的尖货揭晓

游泳时享受音乐的快乐已成为许多人的追求。防水游泳耳机,作为这一追求的重要工具,不仅让我们在水中畅游时能够感受到音乐的魅力,同时也提升了游泳的乐趣。然而,面对市场上琳琅满目的产品,如何选择一款既防水又音质出色…

Java基础-子类与继承

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、继承的概念 二、Java 方法重写 三、Object类 方法 四、final关键字 final 变量 五、Java 多态 …

Oracle 19C RAC集群补丁升级

文章目录 一、补丁包概述二、OPatch检查和更新Grid用户更新OPatchOracle用户更新OPatch 三、验证Oracle Inventory的有效性四、运行 OPatch 冲突检查五、运行opatch命令检查GI HOME下是否有足够的空间六、补丁冲突检测与解决(修补程序)七、使用root用户应…

scGRN:人与鼠的GRN平台

基因调控网络GRN是包含转录因子TFs与其下游靶基因之间的调控相互作用的可解释图模型。了解GRN的拓扑结构和动力学是解释疾病病因机制和将相应发现转化为新疗法的基础。单细胞多组学技术的最新进展促使从单细胞转录组学和表观基因组学数据中以前所未有的分辨率推断GRN。在这里&a…

mysql5.7 源码分析--初始化

集中在sql\mysqld.cc文件的mysqld_main函数中(): 主程序入口 在sql\main.cc文件中: int main(int argc, char **argv) {return mysqld_main(arg, argv); } 一、mysql为了跨平台,对win32系统做了单独的初始化&#x…

GitLab更新失败(Ubuntu)

在Ubuntu下使用apt更新gitlab报错如下: An error occurred during the signature verification.The repository is not updated and the previous index files will be used.GPG error: ... Failed to fetch https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/d…

双指针算法_和为 s 的两个数_C++

题目: 输入一个递增排序的数组,和一个数字s,在数组中查找两个数,使得它们的和正好是数字s,如果有多对数字的和等于s,只需要任意输入一对即可 算法原理: 利用单调性!使用双指针算法&…

STL —— vector(1)

博主首页: 有趣的中国人 专栏首页: C专栏 本篇文章主要讲解vector使用的相关内容 1. vector简介 vector 是 C 标准库中的一个容器类模板,它提供了动态数组的功能,可以方便地管理和操作元素的集合。下面是关于 vector 的一些基本信…

基于unbantu的nginx的配置

目录 前言: 1.安装nginx并进行测试 1.1使用nginx -v 命令查看版本 1.2开启服务 查看端口 1.3测试 2.nginx的静态资源访问配置 2.1创建静态资源存放的目录 2.2写入目录中测试文件对应的内容 2.3修改配置文件 2.4 测试 3.虚拟主机配置 3.1创建目录 3.2写入测试…

[flask]http请求//获取请求体数据

import jsonfrom flask import Flask, requestapp Flask(__name__)app.route("/form1", methods["post"]) def form1():"""获取客户端请求的请求体[表单]:return:""""""获取表单数据请求url:&qu…

【mysql】centos7安装mysql8

目录 1. 下载安装包2. 解压tar包3. 安装4. 查看安装完成后的安装包5. 初始化mysql6. MySQL设置 1. 下载安装包 1.官网地址2.mysql-8.0.35-1.el7.x86_64.rpm-bundle.tar3.放到服务器的目录(这里是/opt/mysql) 2. 解压tar包 1.tar -xvf 可以解压tar.xz后…

批量下载网页文章软件大全

在信息爆炸的时代,网络上充斥着海量的文章和内容,有时我们希望能够批量下载网页上的文章,以便离线阅读或进行进一步处理。为了满足这一需求,出现了许多网页文章批量下载工具,它们能够帮助用户快速、方便地获取网页上的…

【IC前端虚拟项目】write_path子模块DS与RTL编码

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 read_path的代码完成之后,就可以开始整个项目里复杂度最高、bug最多、时序收敛最为困难的模块——write_path的开发了!我自己写过两次这个虚拟项目,每次都是在这里耗时最久,所以大家也可以挑战一下自…

使用AOP实现打印日志

首先创建annotation.SystemLog类: package com.gjh.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.METHOD…

蓝桥杯-卡片换位

solution 有一个测试点没有空格&#xff0c;要特别处理&#xff0c;否则会有一个测试点运行错误&#xff01; 还有输入数据的规模在变&#xff0c;小心顺手敲错了边界条件 #include<iostream> #include<string> #include<queue> #include<map> #incl…

JS new Array.fill(new Array()) 创建二维数组 fill方法的坑

我们通常会通过如下方式来创建一个二维数据&#xff1a; const arr new Array(5).fill(new Array(2).fill(0))我们如果想要修改其中一个元素的值 arr[0][0] 1输出&#xff1a;   我们只想给arr[0][0]赋值&#xff0c;但是每一行数组为0的下标元素的值全部改变了&#xf…

Mysql-实战数据备份与恢复

文章目录 备份类型备份内容备份工具mysqldump备份 实战案例&#xff1a;恢复误删除的表准备工作2:30完全备份完全备份后更新数据表10:00误删students表需要恢复还原的状态开始还原恢复 为什么要备份&#xff1f; 备份是为了&#xff1a;灾难恢复&#xff1a;硬件故障、软件故障…

基于springboot实现房屋租赁系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现房屋租赁系统演示 摘要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本…