首页 > 其他分享 >Day35--抽象类

Day35--抽象类

时间:2024-11-21 20:32:04浏览次数:1  
标签:-- abstract Day35 抽象 Action 抽象类 方法 public

Day35--抽象类

抽象类: abstract 修饰符可修饰方法和类。修饰方法则为抽象方法;修饰类则为抽象类。

抽象类中可以无抽象方法,但有抽象方法的类须声明为抽象类。

抽象类不能用 new 关键字创建对象,他是用来让子类继承的。

抽象方法,只有方法的声明,没有方法的实现,他是用来让子类实现的。

子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

示例:

当在类的修饰符内添加abstract,这个类就是抽象类

package com.liu.oop.demo08;
//抽象类 abstract
public abstract class Action {
}

方法也可以只写名字和返回值,不写如何具体的实现

package com.liu.oop.demo08;
//抽象类 abstract
public abstract class Action {

    
    //约束---有人帮我们写具体内容,就不用在这里写的很详细
    //abstract   抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();
}

如何重写这个方法?

新建Action的子类A类

​ 此时立刻报错

package com.liu.oop.demo08;

public class A extends Action {
}
//报错原因:A类必须声明为抽象,或者实现Action的抽象方法doSomething

抽象类,它的子类必须要实现它的方法;或者子类是抽象

在A里面,重写doSomething方法

package com.liu.oop.demo08;

public class A extends Action {
    @Override
    public void doSomething() {
        
    }
}

拓展:extends是有局限性的,它是单继承,只能有一个父类,有时无法满足我们的需求。这时,我们可以用接口

接口可以多继承

抽象类是无法被new实例化的

示例:

package com.liu.oop;


import com.liu.oop.demo08.A;
import com.liu.oop.demo08.Action;

public class Application {
    public static void main(String[] args) {

        new Action();//报错
    }
}

有抽象方法,它的类必然是抽象类

package com.liu.oop.demo08;
//抽象类 abstract
public  class Action {


    //约束---有人帮我们写具体内容,就不用在这里写的很详细
    //abstract   抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();//---------报错
}

抽象类的方法可以不是抽象的

下面的代码里面,meaningless不是抽象方法,但是可以存在

package com.liu.oop.demo08;
//抽象类 abstract
public abstract class Action {


    //约束---有人帮我们写具体内容,就不用在这里写的很详细
    //abstract   抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();

    public void meaningless(){
        
    }
}

总结:

1.不能 new 这个抽象类,只能靠子类去实现它;约束!
2.抽象类中可以写普通的方法。
3.抽象方法必须在抽象类中。
抽象的抽象:约束。

标签:--,abstract,Day35,抽象,Action,抽象类,方法,public
From: https://www.cnblogs.com/xiaokunzhong/p/18561460

相关文章

  • 【题解】AT_agc011_b [AGC011B] Colorful Creatures
    原题传送门我们知道,要想使一个生物能活到最后,那么它进行的每一次吸收前,它的大小应当尽可能大,所以我们考虑贪心,对生物的大小从小到大排序,每个生物都从小的开始吸收,看能不能活到最后,时间复杂度\(\mathcal{O(n^2)}\)。我们还知道,排序后,生物\(i\)能活到最后,则生物\(i+1\simn\)......
  • 1025 PAT Ranking(模拟、排序)
     方法一:先对总榜按要求进行排序,再遍历总榜时持续维护绝对排名和相对排名并输出即可 方法二:结构体中包含本地排名,在每输入一个测试点的数据以后就进行局部排序,得到本地排名,再将局部信息push到总榜中,再对总榜进行排序,直接输出即可。方法一需要多开三个数组来维护本地排名信息,空......
  • JFrame对象设置
     JFrame对象设置 publicclassHelloWorld{publicstaticvoidmain(String[]args){//创建窗体对象JFramejFrame=newJFrame();//设置窗体大小//jFrame.setSize(600,400);//设置窗体全屏展示......
  • MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地
    最近由magic-quill团队开源的MagicQuill项目十分引人瞩目,这个项目可以通过定制的gradio客户端针对不同的图像元素通过提示词进行修改,从而生成新的图像。值得一提的是,这个项目相当亲民,只需要20步迭代模型预测,甜品卡10秒钟就可以获取图片的修改效果,但是代价是至少需要40个G左......
  • 人工智能之机器学习基础——常见的激活函数
    激活函数是神经网络中的关键组件,用于引入非线性特性,从而使神经网络能够学习复杂的模式和关系。以下是常见的激活函数及其特点、公式和应用场景: 1.Sigmoid(S型函数)公式:σ(x) = 1 +1 / (e−x)特点:输出范围:(0,1)(0,1)(0,1)。常用于二分类问题的概率输出。优点:......
  • ACC_DOCUMENT 增强
    BADI -- IF_EX_ACC_DOCUMENT~CHANGEMETHODif_ex_acc_document~change.DATA:wa_extensionTYPEbapiparex,ext_value(960)TYPEc,wa_accitTYPEaccit,l_refTYPEREFTOdata.FIELD-SYMBOLS:<l_st......
  • 【Python GUI 编程】tkinter :消息框、对话框
    在本教程中,将介绍如何使用tkinter的messagebox模块、filedialog模块、colorchooser模块显示各种消息框、对话框。在使用Tkinter开发应用程序时,需要向用户发送提示、警告、错误信息。这些场景,可以使用messagebox模块中的以下方法实现:showinfo():提示信息。showerror()......
  • 阶乘之和 C++实现代码
    #include<bits/stdc++.h>usingnamespacestd;intmain(){ //求和的变量设置为0,阶乘的变量设置为1 longlongintsum1=0,temp_sum=1; intn; cin>>n; for(inti=1;i<=n;i++){ //每次开始不同数字的阶乘需要将值进行重置 temp_sum=1;......
  • flask框架二手房产交易平台(毕设源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于二手房产交易平台的研究,现有研究主要以综合性房产交易平台为主,专门针对框架二手房产交易平台的研究较少。在国内外的房产交易研究......
  • 大模型在企业落地的三大阻力
    关注我的朋友应该看到了,上个月我作为助教参加了公司新一期的AICA首席架构师培养计划,在三天的学习里我和来自不同的企业学员们做了很多交流,发现大模型要想在企业真正落地,还有很多坎儿需要迈,很多块硬骨头需要啃。前排提示,文末有大模型AGI-CSDN独家资料包哦!今天就想结合这段......