首页 > 编程语言 >Java--抽象

Java--抽象

时间:2023-05-06 10:36:00浏览次数:31  
标签:Java -- void abstract class 抽象 抽象类 public

Java--抽象

抽象的概念

如果父类当中的方法不确定如何进行{}方法体的实现,那么这就应该是一个抽象方法

image-20230505164924169

抽象方法和抽象类的格式

抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束.

抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可.

image-20230505174625370

代码示例

public abstract class Demo {
    public abstract void method1();//这是一个抽象方法,抽象方法所在的类必须为抽象类

    public void method2() {//普通成员方法
        System.out.println("我是一个普通的成员方法");
    }

}

抽象方法和抽象方法的使用

  1. 不能直接创建new抽象对象

  2. 必须用一个子类来继承抽象父类

  3. 子类必须覆盖重写抽象方法的abstract关键字,然后补上方法体的大括号

  4. 创建子类对象进行使用

    image-20230505195027517

代码示例

抽象类

public abstract class Animal {
    public abstract void eat();//创建抽象类

}

子类

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫喜欢吃鱼");
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Cat one = new Cat();
        one.eat();

//        Animal two = new Animal();抽象类不能直接创建对象
    }
}

抽象方法和抽象类的注意事项

  1. 抽象类不能直接创建对象
  2. 抽象类中可以有构造方法,是提供给子类创建对象时,初始化父类成员使用的
  3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
  4. 抽象类的子类,必须重写父类中的所有的抽象方法

image-20230506095800524

image-20230506100750101

代码示例

Animal类

public abstract class Animal {
    public Animal() {
        System.out.println("父类构造方法执行!!");
    }

    public abstract void eat();

    public abstract void sleep();
}

Dog类

public abstract class Dog extends Animal{
    public Dog()
    {
        System.out.println("子类构造方法执行");
    }
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}

Dog2ha类

public class Dog2ha extends Dog{

    @Override
    public void sleep() {
        System.out.println("哈哈哈----");
    }
}

GoldDog类

public class GoldDog extends Dog {


    @Override
    public void sleep() {
        System.out.println("呼呼呼----");
    }
}

Main类

public class Main {
    public static void main(String[] args) {
        GoldDog one = new GoldDog();
        one.eat();
        one.sleep();
        System.out.println("==========");
        Dog2ha two = new Dog2ha();
        two.eat();
        two.sleep();

    }
}

标签:Java,--,void,abstract,class,抽象,抽象类,public
From: https://www.cnblogs.com/harper886/p/17376247.html

相关文章

  • sql按分隔符裁取
    declare@strnvarchar(50);set@str='462,464,2';select@stras'字符串'selectlen(@str)as'字符长度'selectcharindex(',',@str,1)as'第一个逗号的索引值'selectLEFT(@str,charindex(',',@str,1)-1)as'第一个......
  • 配置wordpress:更换网站ico图标(wordpress 6.2)
    一,更换ico1,代码:<linkrel="shortcuticon"href="http://wp.liuhongdi.com/favicon.ico?v=35"type="image/x-icon"/>2,添加代码:3,上传文件到wordpress根目录,如图:二,测试效果:说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest......
  • Java中对比两个字符串的相似度
    Java中对比两个字符串的相似度的方法,以下整理了两个方式比对方法,同样的字符串不同的计算方式得到的结果也是不同的:packagetest;/***对比俩个字符串的相似度*@authorsanshi*/publicclassStrUtil{/***获取最长子串(参数顺序与字符串长短无关)......
  • 软硬件随机数对比
    本文对比C++中std::mt19937和硬件随机数效率。注意硬件随机数指令_rdrand32_step等属于AVX指令集。文档中说明_rdrand32_step可能会失败,失败时返回0,经过几次测试没有发现失败的情况。所以如果程序要求不严可以不管返回值。对比的结果是硬件随机数更慢。所以一般硬件随机数只产生一......
  • linux中查看哪个端口是否被占用
    1.netstat-anp|grep端口号如下,我以3306为例,netstat-anp|grep3306(此处备注下,我是以普通用户操作,故加上了sudo,如果是以root用户操作,不用加sudo即可查看),如下图1: 图1中主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表......
  • 抛出错误
    类1try{//正确后执行的代码conn.Open();intcound=cmd.ExecuteNonQuery();returncound;}catch(Exceptionex)//继承Exception类,自定义错误......
  • VUE常见问题,持续更新
    最新接触VUE3,作为新手在使用TS语法时经常会遇到一些各种各样的问题,在些做个归纳。1.直接引用.json文件最报错TS2732:Cannotfindmodule'@/data.json'.Considerusing'--resolveJsonModule'toimportmodulewith&:在tsconfig.json中添加 "resolveJsonModule":true,......
  • java -cp 错误:找不到或无法加载主类
    java-cp错误:找不到或无法加载主类1.问题场景在一个项目开发中,我需要写一个windows的bat脚本,需要在里面调用SpringBoot项目生成的jar包,我在调用classes下面的jar时通过调用jar包去调用jar包中的某个.java类总是报错误:找不到或无法加载主类最后搞的我心态都崩了,明......
  • canal数据库数据备份时,不同步删除分区动作。
        场景:我们有一大批业务数据,为减少数据库压力和提高使用效率,需要周期性的清理历史分区数据。但是这些数据并不是代表不要了。需要在另一个地方保存 传统数据库的主从复制功能,主要强调的是可以互为备份,强调高可用和可读写分离。但是在我们这个场景下并不适用......
  • Shell脚本的变量
    定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:your_name="runoob.com"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。中间不能有空格,可以使用下划线_。不能......