文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java抽象类、继承及多态和适配器的实现代码

2024-04-02 19:55

关注

Java继承

方法重写是Java语言多态的特性,必须满足以下条件

方法重写限制

super关键字

super关键字和this类似,super修饰的是父类的对象,如super();调用的是父类的默认无参构造器

Java抽象类

抽象类特点

  1. 抽象类通常应包含抽象方法,也可以包含非抽象方法
  2. 抽象类不能使用final关键字修饰
  3. 抽象类自身不能够实例化
  4. 抽象类就是用来被继承的

抽象类的继承

适配器




public class Test {
    public static void main(String[] args) {
        //用父类的类型去new一个子类
        Counter cou = new Add();
        //用父类的类型去调用子类的addition方法并实现
        System.out.println("3+9的和是"+cou.addition(3,9));
    }
}



//定义一个抽象的父类Counter
public abstract class Counter {
    //定义一个抽象方法addition
    public abstract int addition(int num1, int num2);

    public Counter(){
        System.out.println("调用Counter父类构造器");
    }
}



public class Add extends Counter{

    int num1 = 0;
    int num2 = 0;

    //重写父类中的加法并实现加法
    @Override
    public int addition(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
        return num1+num2;

    }

    public Add(){
        System.out.println("调用Add子类构造器");
    }
}

-----------------------------------------------分割线--------------------------------------------------------------




package tool.test;

import tool.abstracts.Construct;
import tool.abstracts.Tool;
import tool.abstracts.Traffic;
import tool.imp.Car;
import tool.imp.Hammer;

public class Test {
    public static void main(String[] args) {
        //实例化顶级工具类对象,调用其中功能方法
        Tool tool1 = new Traffic() {
            @Override
            public void constructTool() {

            }
        };
        tool1.trafficTool();

        Tool tool2 = new Construct() {
            @Override
            public void trafficTool() {

            }
        };
        tool2.constructTool();

        //实例化特殊工具类对象,调用其中功能方法
        Traffic traffic = new Car();
        traffic.trafficTool();

        Construct construct = new Hammer();
        construct.constructTool();


    }
}



package tool.abstracts;

//定义一个tool抽象类
public abstract class Tool {
    //定义一个交通工具抽象方法
    public abstract void trafficTool();
    //定义一个建筑工具抽象方法
    public abstract void constructTool();
}



package tool.abstracts;

//定义一个交通工具抽象类继承自工具类
public abstract class Traffic extends Tool {

    public void trafficTool(){
        System.out.println("我是所有交通工具的集合");
    };
}



package tool.abstracts;

//定义一个建筑工具抽象类继承自工具类
public abstract class Construct extends Tool {

    public void constructTool(){
        System.out.println("我是所有建筑工具的集合");
    };
}



package tool.adaptor;

import tool.abstracts.Construct;

//定义一个Construct的适配器
public class ConstructAdaptor extends Construct {

    //对交通工具方法进行一个重写和空实现
    @Override
    public void trafficTool() {

    }
    //对建筑工具方法进行一个重写和空实现
    @Override
    public void constructTool() {

    }
}



package tool.adaptor;

import tool.abstracts.Traffic;

//定义一个Traffic的适配器
public class TrafficAdaptor extends Traffic {

    //对交通工具方法进行一个重写和空实现
    @Override
    public void trafficTool() {
        System.out.println("我是所有交通工具的集合");
    }
    //对建筑工具方法进行一个重写和空实现
    @Override
    public void constructTool() {

    }
}



package tool.imp;

import tool.adaptor.TrafficAdaptor;

//定义一个普通类并具体实现交通工具方法
public class Car extends TrafficAdaptor {
    @Override
    public void trafficTool() {
        System.out.println("我是交通工具汽车");
    }
}



package tool.imp;

import tool.adaptor.ConstructAdaptor;

//定义一个普通类并具体实现建筑工具方法
public class Hammer extends ConstructAdaptor {
    @Override
    public void constructTool(){
        System.out.println("我是建筑工具锤子");
    }
}

-----------------------------------分割线-----------------------------------




package test;

import abstracts.Tool;
import imp.*;

//定义一个主类Test
public class Test {
    public static void main(String[] args) {
        //实例化Person类
        Person per = new Person();
        //通过多态的方式,以父类的类型实例化各个子类
        Tool car = new Car();
        Tool plane = new Plane();
        Tool print = new Printer();
        Tool laptop = new Laptop();

        //调用对应的子类去具体实现抽象方法
        per.useTool(car);
        per.useTool(plane);
        per.useTool(print);
        per.useTool(laptop);
    }
}



package abstracts;

//定义一个抽象的工具类作为父类
public abstract class Tool {
    //定义一个旅行的抽象方法
    public abstract void travel();

    //定义一个打印的抽象方法
    public abstract void print();

    //定义一个学习的抽象方法
    public abstract void study();
}


package adaptor;

import abstracts.Tool;

//定义一个适配器,继承工具类并提供3个方法的空实现
public class ToolAdaptor extends Tool {
    @Override
    public void travel() {

    }

    @Override
    public void print() {

    }

    @Override
    public void study() {

    }
}


package imp;

import adaptor.ToolAdaptor;

//定义一个汽车类继承父类的适配器,重写并具体实现旅行的这个抽象方法
public class Car extends ToolAdaptor {
    @Override
    public void travel() {
        System.out.println("使用汽车旅行");
    }
}


package imp;

import adaptor.ToolAdaptor;

//定义一个飞机类继承父类的适配器,重写并具体实现旅行的这个抽象方法
public class Plane extends ToolAdaptor {
    @Override
    public void travel(){
        System.out.println("使用飞机旅行");
    }
}


package imp;

import adaptor.ToolAdaptor;

//定义一个笔记本电脑类继承父类的适配器,重写并具体实现学习的这个抽象方法
public class Laptop extends ToolAdaptor {
    @Override
    public void study(){
        System.out.println("使用笔记本电脑学习Java");
    }
}


package imp;

import adaptor.ToolAdaptor;

//定义一个打印机类继承父类的适配器,重写并具体实现打印的这个抽象方法
public class Printer extends ToolAdaptor {
    @Override
    public void print() {
        System.out.println("使用打印机打印文件");
    }


}



package imp;

import abstracts.Tool;

//定义一个Person类
public class Person {
    //定义一个使用工具的方法,接收tool抽象类的类型,并调用tool抽象类的三个抽象方法
    public void useTool(Tool tool){
        tool.travel();
        tool.print();
        tool.study();
    }
}

以上就是Java抽象类、继承及多态和适配器的实现的详细内容,更多关于java抽象类继承多态的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯