Java面向对象之多态、内部类、常用API

news2024/11/22 14:37:49

目录

  • 面向对象之三大特性之三:多态
    • 多态的概述、多态的形式
    • 多态的好处
    • 多态下引用数据类型的类型转换
    • 多态的综合案例
  • 内部类
    • 内部类概述
    • 内部类之一:静态内部类
    • 内部类之二:成员内部类
    • 内部类之三:局部内部类
    • 内部类之四:匿名内部类概述[重点]
    • 匿名内部类常见使用形式
    • 匿名内部类真实使用场景演示
  • 常用API
    • Object
      • toString方法
      • equals方法
    • Objects
    • StringBuilder
    • Math
    • System
    • BigDecimal

面向对象之三大特性之三:多态

多态的概述、多态的形式

在这里插入图片描述

多态的好处

在这里插入图片描述

多态下引用数据类型的类型转换

在这里插入图片描述
在这里插入图片描述

多态的综合案例

在这里插入图片描述

package com.zixin.d4_polymorphic_test;

public interface USB {

    void connect();
    void unconnect();
}

package com.zixin.d4_polymorphic_test;

public class KeyBoard implements USB{
    public String name;

    public KeyBoard(String name) {
        this.name = name;
    }



    @Override
    public void connect() {
        System.out.println(name + "成功连接了电脑~");
    }

    @Override
    public void unconnect() {
        System.out.println(name + "成功从电脑中拔出了~");
    }

    public void keyDown(){
        System.out.println(name+"敲击了:来了,老弟,666,没毛病");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package com.zixin.d4_polymorphic_test;

public class Mouse implements USB{

    private String name;

    public Mouse(String name) {
        this.name = name;
    }

    @Override
    public void connect() {
        System.out.println(name + "成功连接了电脑~");
    }

    @Override
    public void unconnect() {
        System.out.println(name + "成功从电脑中拔出了~");
    }

    public void dbClick(){
        System.out.println(name+"双击点亮小红心,一键三连~~");
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package com.zixin.d4_polymorphic_test;

public class Computer {
    private String name;

    public Computer(String name) {
        this.name = name;
    }

    public void start(){
        System.out.println(name + "开机了~~");
    }

    public void installUSB(USB usb){
        usb.connect();

        if(usb instanceof KeyBoard){
            KeyBoard k = (KeyBoard) usb;
            k.keyDown();
        }else if(usb instanceof Mouse){
            Mouse m = (Mouse) usb;
            m.dbClick();
        }

        usb.unconnect();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package com.zixin.d4_polymorphic_test;

public class Test {
    public static void main(String[] args) {
        Computer c =new Computer("外星人");
        c.start();

        USB u =new KeyBoard("燕双飞");
        c.installUSB(u);

        USB u1 = new Mouse("罗技鼠标");
        c.installUSB(u1);
    }
}

内部类

内部类概述

在这里插入图片描述

内部类之一:静态内部类

在这里插入图片描述
在这里插入图片描述

package com.zixin.d5_innerclass_static;

public class Outer {
    public static class Inner{
        private String name;
        private int age;
        public static String schoolName;

        public Inner(){}

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

        public void show(){

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

    }
}

package com.zixin.d5_innerclass_static;

public class Test {
    public static void main(String[] args) {
        Outer.Inner in = new Outer.Inner();
        in.setName("张三");
        in.show();
    }
}

在这里插入图片描述

内部类之二:成员内部类

内部类之三:局部内部类

内部类之四:匿名内部类概述[重点]

匿名内部类常见使用形式

在这里插入图片描述

package com.zixin.d8_innerclass_anonymous;

public class Test {
    public static void main(String[] args) {
        Animal a =new Animal() {
            @Override
            public void run() {
                System.out.println("老虎跑得快~~~");
            }
        };

        a.run();
    }
}

//class Tiger extends Animal{
//    @Override
//    public void run() {
//        System.out.println("老虎跑得快~~");
//    }
//}

abstract class Animal{
    public abstract void run();
}

在这里插入图片描述
在这里插入图片描述

package com.zixin.d8_innerclass_anonymous;

public class Test2 {
    public static void main(String[] args) {
        Swimming s =new Swimming() {
            @Override
            public void swim() {
                System.out.println("学生游泳很开心");
            }
        };
        go(s);


        go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("老师游泳很快");
            }
        });
    }

    public static void go(Swimming s){
        System.out.println("开始。。。");
        s.swim();
        System.out.println("结束。。。");
    }
}



interface Swimming{
    void swim();
}

匿名内部类真实使用场景演示

常用API

Object

在这里插入图片描述
在这里插入图片描述

toString方法

在这里插入图片描述

package com.zixin.d9_api_object;

public class Student { // extends Object
    private String name;
    private char sex;
    private int age;

    public Student() {
    }

    public Student(String name, char sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }
}

package com.zixin.d9_api_object;

public class Test {
    public static void main(String[] args) {
        Student s = new Student("周雄",'男',19);
        System.out.println(s.toString());

        System.out.println(s);

    }
}

在这里插入图片描述

equals方法

在这里插入图片描述

package com.zixin.d9_api_object;

import java.util.Objects;

public class Student { // extends Object
    private String name;
    private char sex;
    private int age;

    public Student() {
    }

    public Student(String name, char sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return sex == student.sex && age == student.age && Objects.equals(name, student.name);
    }


//    @Override
//    public boolean equals(Object o){
//        if(o instanceof Student){
//            Student s2 = (Student) o;
//
//            return this.name.equals(s2.name) && this.age == s2.age && this.sex==s2.sex;
//        }else{
//            return false;
//        }
//    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }
}

package com.zixin.d9_api_object;

public class Test2 {
    public static void main(String[] args) {
        Student s = new Student("周雄",'男',19);
        Student s2 = new Student("周雄",'男',19);
        System.out.println(s.equals(s2));
        System.out.println(s==s2);
    }
}

在这里插入图片描述

Objects

在这里插入图片描述
在这里插入图片描述

StringBuilder

在这里插入图片描述
在这里插入图片描述

package com.zixin.d10_api_objects;

public class StringBuilderDemo1 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("a");
        sb.append(false);
        sb.append(3.3);
        System.out.println(sb);

        StringBuilder sb1 = new StringBuilder();
        sb1.append("a").append("b").append(2);
        System.out.println(sb1);

        sb1.reverse().append(110);
        System.out.println(sb1);

        System.out.println(sb1.length());

        String rs = sb1.toString();
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.zixin.d10_api_objects;

public class StringBuilderTest2 {
    public static void main(String[] args) {
        int [] arr1 =null;
        System.out.println(toString(arr1));

        int[] arr2={1,2,3,5};
        System.out.println(toString(arr2));
    }

    public static String toString(int[] arr){
        if(arr !=null){
            StringBuilder sb = new StringBuilder("[");
            for(int i =0;i<arr.length;i++){
                sb.append(arr[i]).append(i== arr.length-1?"":",");
            }
            sb.append("]");
            return sb.toString();
        }
        else{
            return null;
        }
    }
}

Math

在这里插入图片描述

System

在这里插入图片描述
在这里插入图片描述

package com.zixin.d13_system;

import java.sql.Array;
import java.sql.SQLOutput;
import java.util.Arrays;

public class SystemDemo {
    public static void main(String[] args) {
        System.out.println("程序开始。。。");

//        System.exit(0);

        long time = System.currentTimeMillis();
        System.out.println(time);

        long startTime = System.currentTimeMillis();
        for(int i=0;i<100000;i++){
            System.out.println("输出:"+i);
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime/1000.0+"s");

        int []arr1 = new int[]{10,20,30,40,50,60,70};
        int [] arr2 = new int[6];
        System.arraycopy(arr1,3,arr2,2,3);
        System.out.println(Arrays.toString(arr2));

        System.out.println("程序结束");
    }
}

BigDecimal

在这里插入图片描述
在这里插入图片描述

package com.zixin.d14_bigdecimal;

import java.math.BigDecimal;

public class BigDecimalDemo {
    public static void main(String[] args) {
        System.out.println(0.09+0.01);

        double a = 0.1;
        double b = 0.2;
        double c = a + b;
        System.out.println(c);
        System.out.println("- ------------");

        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);

        BigDecimal c1 = a1.subtract(b1);
        System.out.println(c1);

        double rs = c1.doubleValue();
        System.out.println(rs);

        System.out.println("--------");

        BigDecimal a11 = BigDecimal.valueOf(10.0);
        BigDecimal b11 = BigDecimal.valueOf(3.0);

        BigDecimal c11 = a11.divide(b11,2,BigDecimal.ROUND_HALF_UP);
        System.out.println(c11);
    }
}

在这里插入图片描述

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

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

相关文章

JavaSE与网络面试题

大佬的&#xff1a; https://github.com/Snailclimb/JavaGuide https://osjobs.net/topk/all/ 自增自减 要点&#xff1a; 赋值 &#xff0c;最后计算 右边的从左到右加载值&#xff0c;一次压入操作数栈 实际先算哪个看运算符的优先级 自增、自减操作都是直接修改变量…

SpringCloud面试题

为什么需要学习Spring Cloud 不论是商业应用还是用户应用&#xff0c;在业务初期都很简单&#xff0c;我们通常会把它实现为单体结构的应用。但是&#xff0c;随着业务逐渐发展&#xff0c;产品思想会变得越来越复杂&#xff0c;单体结构的应用也会越来越复杂。这就会给应用带…

带你走入虚函数和多态的世界(c++)

1、什么是虚函数 C类中用virtual修饰的函数叫做虚函数&#xff0c;构造函数没有虚构造函数&#xff0c;存在虚析构函数&#xff0c;C所有虚函数都是一个指针去存储的&#xff0c;所以具有虚函数的类&#xff0c;内存会增加一个指针大小的内存 #include<iostream> #includ…

第一章:计算机网络概述

一、计算机网络基本概念 1、什么是计算机网路&#xff1f; 计算机网络是通信技术与计算机技术紧密结合的产物。计算机网络就是一种特殊的通信网络&#xff0c;其特别之处就是&#xff0c;其信源和信宿通常就是我们所说的计算机&#xff0c;发出的信息通常就是数字化的一些信息…

数据分析-深度学习 Pytorch Day5

李宏毅《机器学习》第6讲——梯度下降Review: 梯度下降法在回归问题的第三步中&#xff0c;需要解决下面的最优化问题&#xff1a;我们要找一组参数θ &#xff0c;让损失函数越小越好&#xff0c;这个问题可以用梯度下降法解决。假设θ有里面有两个参数θ1,θ2&#xff0c;随机…

FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(一)

第七章 实战项目提升&#xff0c;完善简历 19.OV7725摄像头实时采集送HDMI显示&#xff08;一&#xff09; 在例程“OV7725摄像头实时采集送HDMI显示”中&#xff0c;我们将走近FPGA图像处理的世界&#xff0c;图像处理、数字信号、高速接口也一直被业界公认为FPGA应用的三大主…

k8s ingress概念和实践

什么是Ingress Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTP/HTTPS 该特性从1.19版本开始作为stable状态进行发布 Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。 如下…

Python算法:三种简单排序的方法

目录 前言 1、插入排序 实例 2、选择排序 实例 3、冒泡排序 实例 前言 声明&#xff1a;本文所有动图来源为菜鸟教程 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红…

监督学习、半监督学习、无监督学习、自监督学习、强化学习和对比学习

目录 一、监督学习 二、半监督学习 三、无监督学习 3.1.聚类算法 3.2.降维算法 3.3.异常检测 3.4.自动编码器 3.5.生成模型 3.6.关联规则学习 3.7.自组织映射(SOM) 四、自监督学习 4.1. 基于上下文&#xff08;Context based&#xff09; 4.2. 基于时序&#xff08…

85.【Vue-细刷-01】

Vue(一)、利用Vscode开发Vue1.在桌面创建文件夹code2.使用Vscode进行打开这个文件夹3.在Vscode的右键创建文件夹4.右键创建.html文件(二)、第一个Vue程序1.下载并引入Vue.js2.引入vue.js3.创建视图层4.创建Model层5.获取Vue实列中的数据6.效果展示⭐为什么要使用new 关键字来创…

文件操作(二):学习笔记10

目录 一.概念梳理 1.文件的分类 2.程序运行时&#xff0c;内存和外存数据交流的过程 二.文件缓冲区 三.常用的文件读写函数笔记 1.常用格式化文件读写函数 (1)格式化文件写入函数 用fprintf进行文件写入操作&#xff1a; (2)格式化文件读取函数 用fscanf进行文件读取 2…

Java枚举类与注解

目录 一、枚举类的使用 枚举类的实现 枚举类的属性 自定义枚举类 步骤 举例 使用enum定义枚举类 使用说明 举例 Enum类的主要方法 实现接口的枚举类 二、注解的使用 概述 常见的Annotation示例 自定义Annotation&#xff08;参照SupressWarnings 定义&#xff09…

一不小心,登上支付宝开发者社区热文榜单Top3

大家好&#xff0c;我是小悟 那天中午要午休的时候&#xff0c;看到微信通讯录新朋友有个红色1&#xff0c;像俺这种有强迫症的&#xff0c;那不得去把它点掉。打开一看&#xff0c;加好友的备注是“我是熊二&#xff0c;支付宝开发者社区运营”。 收到支付宝社区的运营添加微…

【ROS】dynamic_reconfigure配置详细说明

文章目录 文章目录 前言 一、编写.cfg文件 二、为节点配置dynamic_reconfigure 总结 前言 dynamic_reconfigure配置是ROS中为了方便用户对程序中的参数进行实时调整而推出的工具&#xff0c;配置好自己的dynamic_reconfigure文件后&#xff0c;可以很方便的使用ROS提供的r…

2022-12-18 网工进阶(三十八)MPLS LDP---LDP基础、工作原理(会话、标签的发布和管理、特性)、配置举例

LDP概述 LDP是MPLS的一种控制协议&#xff0c;相当于传统网络中的信令协议&#xff0c;负责FEC的分类、标签的分配以及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。 LDP的工作过程主要分为两部分&#xff1a;LSR之间建立LDP会话&#xff1b;…

一种小型项目的超时机制方案

设计背景 在小型项目中&#xff0c;状态机的跳转往往依赖于某个事件的状态&#xff0c;因此监控某个事件是否处于超时状态就至关重要&#xff1b; 注意事项 超时机制应该能够准确的判断出事件是否真正超时&#xff0c;并预留出设置自定义超时处理的接口&#xff1b;超时机制…

什么是大数?大数有什么用?如何使用大数?

0 什么是大数 如果基本的整数和浮点数精度不能够满足需求&#xff0c;那么可以使用 javamath 包中两个很有用的类:BigInteger和 BiDecimal。 这两个类可以处理包含任意长度数字序列的数值。 BigInteger类实现任意精度的整数运算&#xff0c;BigDecimal实现任意精度的浮点数运算…

Android | Fragment

Android Fragment Fragment 概念 Fragment 表示应用界面中可重复的一部分&#xff0c;Fragment 定义和管理自己的布局&#xff0c;具有自己的生命周期&#xff0c;并且可以处理自己的输入事件。fragment 不能独立存在&#xff0c;而是必须由 Activity 或另一个 fragment 托管…

麦克纳姆轮(麦轮)原理

一、麦轮原理 麦克纳姆轮&#xff1a;简称麦轮&#xff0c;由轮毂和围绕轮毂的辊子组成。 辊子&#xff1a;没有动力的从动小滚轮。 麦克纳姆轮辊子轴线和轮毂轴线夹角是45度。 A轮&#xff08;左旋&#xff09;与B轮&#xff08;右旋&#xff09;互为镜像关系 麦轮在车上的…

Go语言开发小技巧易错点100例(五)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09; …