4.2学习总结

news2024/12/28 3:44:52

一.java学习总结

(本次java学习总结,主要总结了抽象类和接口的一些知识,和它们之间的联系和区别)

一.抽象类

1.1定义:

抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类。

2.概括:

有方法声明,没有方法体”的一类方法统称为抽象方法抽象方法用关键字abstract修饰。需要注意的是,如果一个方法已经确定是抽象方法,那么它绝不能再有方法体,即不能出现大括号,而是只需要在()后面添加一个分号即可

3.注意点:拥有抽象方法的类一定是抽象类;但是抽象类不一定有抽象方法

1.2使用场景

 当父类需要定义一个方法,却不能明确该方法的具体实现细节时,可以将该方法定义为abstract,具体实现细节延迟到子类。(让子类重写这个方法)

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 abstract void eat();
}

(若父类中定义了一个抽象方法要求其所有非抽象子类都必须重写该抽象方法。否则会报错)

1.3抽象类的特点

1.abstract关键字 : 

 abstract关键字只能用于修饰类和方法,用于声明抽象类和抽象方法。

格式:

修饰符  abstract class 类名()

修饰符  abstract 返回值类型 方法名(形参例表)

2.抽象类不能被实例化,只能创建其子类对象.

3.  如果某个类继承了一个抽象类,那么这个类有两个选择——要么实现父类所有的抽象方法,要么子类本身也定义成抽象类

4.事例

Animal(父类)

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();
}

 子类

//子类Cat
public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫在吃鱼");
    }
}

//子类Dog
public class Dog extends Animal{

    @Override
    public void eat() {
        System.out.println("狗在吃骨头");
    }
}

//子类Sleep
public class Sleep extends Animal{
    @Override
    public void eat() {
        System.out.println("山羊在吃草");
    }
}

测试

import jdk.nashorn.internal.ir.CatchNode;

public class TEXT {
    public static void main(String[] args) {
        Dog d=new Dog();
        d.setName("小狗");
        d.setAge(1);
        System.out.println(d.getName()+", "+d.getAge());
        d.eat();
        d.drink();

        Cat c =new Cat();
        c.setName("小猫");
        c.setAge(2);
        System.out.println(c.getName()+", "+c.getAge());
        c.eat();
        c.drink();

        Sleep s=new Sleep();
        s.setName("山羊");
        s.setAge(3);
        System.out.println(s.getName()+", "+s.getAge());
        s.eat();
        s.drink();
    }
}

运行结果

总结:抽象类中我们主要学习其抽象方法的使用,  (抽象类中的成员只比非抽象类多一种——抽象方法。其他都和非抽象类一样)

二.接口

2.1定义:

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

简单来说:接口就是一种被规范的标准,只要符合这个标准都可以通用,接口的表现在于对行为的抽象.

格式:

定义接口:interface 接口名{ } 

使用接口:class 类名 implements 接口名{ }

 2.2接口的特点:

1.接口中的成员变量

  • 接口中没有成员变量,只要共有静态常量(即默认情况下都有 public static final 这三个关键字修饰)
  • 格式:public static final 常量名=常量值
  • 在接口中定义公有静态常量时,必须在定义时就赋初值。
public interface swim {
    //初始化要赋值
    public static final int num=1;
    
    public abstract void Swim();
}

 

2.接口中的成员方法

 

3.接口中的创建对象

  • 接口不能被实例化.
  • 接口的子类可以是抽象实现类,也可以是非抽象的(非抽象实现类要重写接口中的所有抽象方法)

 

4.接口的继承关系

  • 类与接口之间的关系:多实现(一个类可以实现多个接口,弥补java无法多继承)
  • 接口与接口之间的关系:一个接口可以多继承多个接口(接口 extends 接口1,接口2,接口3...)
  • 继承和实现的区别:继承是父类中的共性内容,实现是父类中的特性(扩展)内容.

2.3实例:

Animal和前面的相同(不展示了)

接口

public interface swim {
    //初始化要赋值
    public static final int num=1;

    public abstract void Swim();
}

子类

//子类Dog
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("狗在狗刨!");
    }
}

//子类Flag
public class Flag extends Animal implements swim{

    public Flag() {
    }

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

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

    @Override
    public void Swim() {
        System.out.println("青蛙在蛙泳!");
    }
}

//子类rabbit
public class rabbit extends Animal{

    public rabbit() {
    }

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

    @Override
    public void eat() {
        System.out.println("兔子在吃草!");
    }

    public void jump(){
        System.out.println("兔子在蹦高!");
    }
}

text

public class Text {
    public static void main(String[] args) {
        Dog d=new Dog("狗剩子",1);
        System.out.println(d.getName()+", "+d.getAge());
        d.eat();
        d.Swim();
        System.out.println("--------------------");

        rabbit r=new rabbit("麻辣兔头",1);
        System.out.println(r.getName()+", "+r.getAge());
        r.eat();
        r.jump();
        System.out.println("--------------------");

        Flag f=new Flag("青蛙王子",2);
        System.out.println(f.getName()+", "+f.getAge());
        f.eat();
        f.Swim();
        System.out.println("--------------------");
    }
}

运行结果:

总结:

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

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

相关文章

在jsp文件内使用jdbc报错

使用idea创建javaweb项目后,在jsp文件内使用jdbc连接数据库错误,显示以下内容: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriverat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappCl…

相关滤波跟踪算法-CSK

0. 写在前面 对相关滤波算法综述比较强的文档: NIUBILITY的相关滤波框架详解 - 知乎 (zhihu.com) 1. 概述 相关滤波算法问世之前,跟踪算法饱受运行时间的困扰,直到MOSSE算法出现,直接将算法速度提到了615fps,第一次将…

Makefile:通用部分头文件与条件判断(八)

1、通用部分做头文件 首先举个例子看看为什么需要这个东西,例如在一个文件夹下有两个项目,两个项目都需要编写makefile编译,此时可以使用公共头文件 目录结构如下: 1.1、项目(一) 有a.cpp、b.cpp、c.cpp…

虚拟机安装银河麒麟

背景 由于Centos将于2024-06-30结束维护【脱保】,届时会存在Bug无人修复及功能无人开发等问题,所以要赶在这个节点前完成操作系统升级。可选的就是RedHat、Ubuntu以及国产信创【中标麒麟、银河麒麟、统信等】,或者使用云上操作系统【例如租阿…

嵌入式4-2

今日作业&#xff1a;使用文件IO 实现父进程向子进程发送信息&#xff0c;并总结中间可能出现的各种问题 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <fcntl.h> #include <unistd.h> int m…

C#中值类型与引用类型的存储

目录 值对象与引用对象的存储 引用对象的成员存储 值对象与引用对象的存储 数据项的类型定义了存储数据需要的内存大小及组成该类型的数据成员。类型还决定了对象在内存中的存储位置——栈或堆。 C#中类型分为两种&#xff1a;值类型和引用类型&#xff0c;这两种类型的对象…

YOLOv8全网独家改进: 小目标 | 注意力 |卷积和注意力融合模块(CAFMAttention) | 2024年4月最新成果

💡💡💡本文独家改进:卷积和注意力融合模块(CAFMAttention),增强对全局和局部特征的提取能力,2024年最新的改进思路 💡💡💡创新点:卷积和注意力巧妙设计 💡💡💡如何跟YOLOv8结合:1)放在backbone后增强对全局和局部特征的提取能力;2)放在detect前面,增…

公司只有一个测试,要怎么继续呆下去?

在面试的时候&#xff0c;面试官可能会问&#xff1a;小公司、小团队&#xff0c;岗位就你一个人&#xff0c;怎么做 &#xff1f; 或者已经有的小伙伴已经在公司中面临只有一个测试的处境&#xff0c;这个时候我们应该怎么处理呢&#xff1f; 一 原因分析 公司只有一个测试人…

网易云首页单页面html+css

网页设计与网站建设作业htmlcss 预览 源码查看https://hpc.baicaitang.cn/2083.html

1999-2022年上市公司员工人数数据

1999-2022年上市公司员工人数数据 1、时间&#xff1a;1999-2022年 2、指标&#xff1a;证券代码、时间、员工人数 3、来源&#xff1a;整理自csmar 4、范围&#xff1a;上市公司 5、指标解释&#xff1a; 上市公司员工人数是衡量公司规模和发展状的重要指标。该数据直接…

4.2 JavaWeb Day05分层解耦

三层架构功能 controller层接收请求&#xff0c;响应数据&#xff0c;层内调用了service层的方法&#xff0c;service层仅负责业务逻辑处理&#xff0c;其中要获取数据&#xff0c;就要去调用dao层&#xff0c;由dao层进行数据访问操作去查询数据&#xff08;进行增删改查&…

Vision Pro开发实践(一)

简介 Vision Pro是苹果公司的首款头戴式“空间计算”显示设备&#xff0c;于2023年6月6日在“WWDC2023”正式发布&#xff0c;同时推出的还有专为Vision Pro打造的操作系统平台visionOS&#xff0c;以及一整套“新的”开发工具&#xff0c;之所以打引号&#xff0c;是因为用于…

Taro多行文本最多展示5行,超出“查看更多”展示,点击弹层

Taro中&#xff0c;页面需求&#xff1a; 多行文本&#xff0c;展示最多展示5行&#xff0c;超出5行&#xff0c;展示“查看更多”按钮&#xff0c;点击弹层展示文本详细信息。 弹层代码就不说了&#xff0c;着重说一下怎么获取区域高度&#xff5e; 1.区域设置max-height&am…

【AI绘画/作图】风景背景类关键词模板参考

因为ds官网被墙,所以翻了IDE的源码整理了下stablestudio里的官方模板&#xff0c;顺便每个模板生成了一份…不知道怎么写关键词的可以参考 Stunning sunset over a futuristic city, with towering skyscrapers and flying vehicles, golden hour lighting and dramatic cloud…

java的警示之有危险的行为

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

ssm016基于 Java Web 的校园驿站管理系统+jsp

校园驿站管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对校园快递信息管理混乱&#xff0c;出…

类和对象的下篇

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

从零实现一个Http服务器

HttpServer HTTPServer项目是一个基于C编写的简单的HTTP服务器实现&#xff0c;用于处理客户端的HTTP请求并提供相应的服务。该项目使用了Socket编程来实现服务器与客户端之间的通信&#xff0c;通过监听指定的端口并接受客户端连接&#xff0c;然后解析HTTP请求并生成对应的H…

新版Pubmed初识

PubMed基本检索操作指南。 PubMed和MEDLINE MEDLINE是美国国立医学图书馆&#xff08;The National Library of Medicine&#xff0c;NLM&#xff09;开发的国际性综合生物医学信息书目数据库&#xff0c;是当前国际上最权威的生物医学文献数据库。内容包括美国医学索引&…

通过提交容器的方式修改ubuntu镜像的apt源

通过提交容器的方式修改ubuntu镜像的apt源 步骤总结 问题&#xff0c;每次创建容器之后&#xff0c;都要在容器内手动更改镜像源。 不如&#xff0c;干脆修改镜像的apt源&#xff0c;一次到位。 步骤 先创建一个容器&#xff0c;到容器内执行变更命令。 D:/sandbox> dock…