首页 > 编程语言 >大数据学习记录,Java基础(4)

大数据学习记录,Java基础(4)

时间:2025-01-16 13:58:52浏览次数:1  
标签:Java 记录 子类 接口 学习 抽象类 重写 方法 public

多态

多态的形式和体现

1.对象的多态性

对象的多态性:父类的引用指向子类的对象

格式:(父类类型:指子类继承的父类类型,或者实现的接口类型)

父类类型 变量名 = 子类对象;

例:

Person p = new Student();
Object o = new Person();//Object类型的变量o,指向Person类型的对象
o = new Student(); //Object类型的变量o,指向Student类型的对象

2.多态的理解

多态访问成员的特点:
1、成员变量: 编译看左,运行看左
2、成员方法: 编译看左,运行看右
3、静态成员方法: 编译看左,运行看左

多态的使用前提:① 类的继承关系 ② 方法的重写

例:

public class Pet {
    private String nickname; //昵称

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public void eat(){
        System.out.println(nickname + "吃东西");
    }
}

public class Cat extends Pet {
    //子类重写父类的方法
    @Override
    public void eat() {
        System.out.println("猫咪" + getNickname() + "吃鱼仔");
    }

    //子类扩展的方法
    public void catchMouse() {
        System.out.println("抓老鼠");
    }
}

public class Dog extends Pet {
    //子类重写父类的方法
    @Override
    public void eat() {
        System.out.println("狗子" + getNickname() + "啃骨头");
    }

    //子类扩展的方法
    public void watchHouse() {
        System.out.println("看家");
    }
}

3.多态的好处和弊端

好处:变量引用的子类对象不同,执行的方法就不同,实现动态绑定。代码编写更灵活、功能更强大,可维护性和扩展性更好了。

弊端:一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。

关键字:abstract

1.语法格式

  • 抽象类:被abstract修饰的类。
  • 抽象方法:被abstract修饰没有方法体的方法。

例:

抽象类

[权限修饰符] abstract class 类名{
    
}
[权限修饰符] abstract class 类名 extends 父类{
    
}

抽象方法

[其他修饰符] abstract 返回值类型 方法名([形参列表]);

注意:抽象方法没有方法体

2.使用说明

  • 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。

  • 抽象类中,也有构造方法,是供子类创建对象时,初始化父类成员变量使用的。
  • 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。

注意:不能用abstract修饰变量、代码块、构造器;

​ 不能用abstract修饰私有方法、静态方法、final的方法、final的类。

接口interface

1.概述

interface主要是为了提供一个类的扩展功能,可以被看成一个特殊的类

2.特点

  • 成员变量必须是被final修饰的,默认会添加public static final的修饰符
  • 成员方法在jdk1.8之前必须是抽象方法,默认会添加public abstrct修饰符

3.接口声明的格式

[修饰符] interface 接口名{
    //接口的成员列表:
    // 公共的静态常量
    // 公共的抽象方法
    // 公共的默认方法
    // 公共的静态方法
}

4.接口的使用规则

  • 接口不能直接创建对象,但是可以通过接口名直接调用接口的静态方法和静态常量。

例:

public class TestUSB {
    public static void main(String[] args) {
        //通过“接口名.”调用接口的静态方法 (JDK8.0才能开始使用)
        USB.show();
        //通过“接口名.”直接使用接口的静态常量
        System.out.println(USB.MAX_SPEED);
    }
  • 接口不能创建对象,但是可以被类实现(implements ,类似于被继承)。
【修饰符】 class 实现类  implements 接口{
	// 重写接口中抽象方法【必须】,如果实现类是抽象类,那么可以不重写
  	// 重写接口中默认方法【可选】
}

【修饰符】 class 实现类 extends 父类 implements 接口{
    // 重写接口中抽象方法【必须】,如果实现类是抽象类,那么可以不重写
  	// 重写接口中默认方法【可选】
}
  • 接口中的静态方法不能被继承也不能被重写

5.接口的多实现

在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接口的多实现。并且,一个类能继承一个父类,同时实现多个接口。

实现格式:

【修饰符】 class 实现类  implements 接口1,接口2,接口3。。。{
	// 重写接口中所有抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
  	// 重写接口中默认方法【可选】
}

【修饰符】 class 实现类 extends 父类 implements 接口1,接口2,接口3。。。{
    // 重写接口中所有抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
  	// 重写接口中默认方法【可选】
}

接口中,有多个抽象方法时,实现类必须重写所有抽象方法。

6.接口的多继承

一个接口能继承另一个或者多个接口,接口的继承也使用 extends 关键字,子接口继承父接口的方法。

例:

定义父接口:
public interface Chargeable {
    void charge();
    void in();
    void out();
}

定义子接口:
public interface UsbC extends Chargeable,USB3 {
    void reverse();
}

定义子接口的实现类:
public class TypeCConverter implements UsbC {
    @Override
    public void reverse() {
        System.out.println("正反面都支持");
    }

    @Override
    public void charge() {
        System.out.println("可充电");
    }

    @Override
    public void in() {
        System.out.println("接收数据");
    }

    @Override
    public void out() {
        System.out.println("输出数据");
    }
}

所有父接口的抽象方法都有重写。

方法签名相同的抽象方法只需要实现一次。

参数与返回值

参数类型

1.基本参数类型

整数型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

2.引用数据类型

数组:传入数组的地址值

:当一个类作为方法参数类型传递的时候,将来调用时应该传入该的类对象

抽象类:当你看到一个抽象类作为方法形式参数类型的时候,将来调用时,应该传入该抽象类的具体子类的对象

接口:当你看到一个接口作为方法形式参数类型的时候,将来调用该方法时,应该传入实现该接口的具体子类对象

返回值类型

1.基本参数类型

基本参数类型返回对应类型的返回值

2.引用数据类型

数组:返回一个数组地址值

:当你看到一个类作为方法的返回值类型的时候,将来方法内部定义时应该返回该类的对象

抽象类:当你看到一个抽象类作为方法的返回值类型的时候,将来方法内部定义时应该返回该抽象类具体子类对象

接口:当你看到一个接口作为方法的返回值类型的时候,将来方法内部定义时应该返回实现该接口的具体子类对象

标签:Java,记录,子类,接口,学习,抽象类,重写,方法,public
From: https://www.cnblogs.com/yinzhanpeng123/p/18674818

相关文章

  • 大数据学习记录,Java基础(3)
    面向对象面向对象的特征:封装随着系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”,而“高内聚,低耦合”的体现之一:高内聚:类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用......
  • 【Java】若依(ruoyi-cloud)——14.Sentinel支持(服务熔断与降级)
    若依微服务版(ruoyi-Cloud)如何实现熔断和降级?知识前提:对Sentinel的使用有了解若依微服务版启动对nacos服务注册和使用有了解若依微服务版(ruoyi-cloud)中使用sentinel,进行服务熔断与降级。环境要求和前提JDK>=1.8(推荐1.8版本)Mysql>=5.7.0(推荐5.7版本)Redis>=......
  • (未完工)「学习笔记」二维数点问题
    0.0前言看了一个晚上,加上同桌的讲解,大致了解了二维数点问题的基本思路。0.1前置知识可持久化线段树树状数组1.0概述二维数点问题的一般形式是形如“给定平面上\(n\)个点,每次询问给定一个矩形,求该位于矩形内的点的个数”一类问题,模板题为P2163[SHOI2007]园丁的......
  • IO流(Java)
    一、IO体系的核心概念1.什么是IOJava应用程序与外部环境(如文件系统、网络等)之间的数据交换。2.流(1)什么是数据传输的抽象体现3.类型(1)字节流以字节为单位处理数据,主要处理原始二进制数据,比如说图像、声音。主要类包含InputStream和OutputStream。(2)字符流以字符......
  • 东软云医院HIS系统-药房管理系统【Swing窗口+MySQL】(Java课设)
         客官进来看一眼呗,有惊喜!【帮你解决烦恼】:Java课设和计Java毕设太难不会做怎么办?系统类型Swing窗口类型+Mysql数据库存储数据使用范围适合作为Java课设!!!部署环境jdk1.8+Mysql8.0+Idea或eclipse+jdbc运行效果本系统源码地址:东软云医院HIS系统-药房管理系统【Sw......
  • JAVA-Exploit编写(5)--http-request库使用
    目录1.http-request简介2.依赖导入3.GET请求方式3.1test.php3.2基本使用代码实现 3.2请求时请求参数URL编码实现 3.3携带多参数请求3.Post请求方式3.1基本使用3.2携带单个参数请求 3.3携带多个参数请求4.设置代理请求 4.1方式一4.2方式二1.ht......
  • [2834]基于JAVA的著作权登记智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的著作权登记智慧管理系统的设计与实现指导老师(一)选题的背景和意义随着科技的发展,数字化技术在各个领域的应用越来越广泛。特别是在知识产权领域,著作权登记、管理、保护等方面的工作也面临着数字化转型的挑战。然而......
  • [2823]基于JAVA的药店销售智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的药店销售智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当今社会,药店作为医疗保健服务的重要组成部分,其日常运营管理和药品销售管理对于保障公众健康具有重要意义。随着科技的不断发展和信息化水平的提高......
  • 【附源码】JAVA大学生竞赛管理系统源码+SpringBoot+VUE+前后端分离
    学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:大学生竞赛管理系统 。本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员!一.系统演示系统测试截图   系统视频演示 https://githubs.xyz/show/343.mp4 二.系统概述 ......
  • 【附源码】JAVA课程管理系统源码+SpringBoot+VUE+前后端分离
    学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:课程管理系统 。本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员!一.系统演示系统测试截图     系统视频演示 https://githubs.xyz/show/342.mp4 二.系统概述......