首页 > 其他分享 >11.面向对象(3)

11.面向对象(3)

时间:2024-09-05 19:49:47浏览次数:12  
标签:11 调用 子类 多态 接口 面向对象 方法 public

MODULE 11 面向对象

  1. 会定义接口
  2. 会在接口中定义抽象方法,默认方法,静态方法,成员变量
  3. 会调用接口中的成员
  4. 会利用多态的方式new对象
  5. 知道多态的前提
  6. 要知道使用多态的好处
  7. 会在多态的前提下,向下转型
  8. 会利用instanceof判断类型

一.接口

(一)接口的介绍

1.接口:是一个引用数据类型,是一个标准,规则

2.关键字:

(1)interface接口

public interface 接口名{}

(2)implements 实现

实现类 implements 接口名{}

3.接口中可以定义的成员

(1)jdk7以及之前:

抽象方法:public abstract -> 即使不写public abstract,默认也有

成员变量:public static final 数据类型 变量名 = 值 -> 即使不写 public static final,默认也有

final是最终的,被final修饰的变量不能二次赋值,所以我们一般将 final修饰的变量视为常量

(2)jdk8:

默认方法:public default 返回值类型 方法名(形参){}

静态方法:public static 返回值类型 方法名(形参){}

(3)jdk9开始:

` 私有方法:private的方法

(二)接口的定义以及使用

1.定义接口:

public interface 接口名{}

2.实现:

public class 实现类类名 implements 接口名{}

3.使用:

(1)实现类实现接口

(2)重写接口中的抽象方法

(3)创建实现类对象(接口不能直接new对象)

(4)调用重写的方法

(三)接口中的成员

1.抽象方法

(1)定义格式

public abstract 返回值类型 方法名(形参);

(2)注意

不写public abstract 默认也有

(3)使用

A.定义实现类,实现接口

B.重写抽象方法

C.创建实现类对象,调用重写的方法

2.默认方法

(1)格式:

public default 返回值类型 方法名(形参){

方法体

return 结果

}

(2)使用

A.定义实现类,实现接口

B.默认方法可重写,可不重写

C.创建实现类对象,调用默认方法

3.静态方法

(1)格式

public static 返回值类型 方法名(形参){

方法体

return 结果

}

(2)使用

接口名直接调用

默认方法和静态方法 -> 可以作为临时加的一个小功能

4.成员变量

(1)格式

public static final 数据类型 变量名 = 值

(2)相关知识点:final

final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量

(3)特点

不写public static final默认也有

(4)使用

接口名直接调用

(5)注意

A.被static final修饰的成员变量需要手动赋值

B.习惯上我们会将static final修饰的成员变量名大写

(四)接口的特点

1.接口可以多继承 -> 一个接口可以继承多个接口

public interface InterfaceA extends InterfaceB,InterfaceC{}

2.接口可以多实现 -> 一个实现类可以实现一个或者多个接口

public class InterfaceImp1 implements InterfaceA,InterfaceB{}

3.一个子类可以继承一个父类的同时实现一个或多个接口

public class Zi extends Fu implements InterfaceA,InterfaceB{}

4.注意:

继承也好,实现接口也罢,只要是父类中或者接口的抽象方法,子类或者实现类 都要重写

当一个类实现多个接口时,如果接口中的抽象方法有重名且参数一样的,只需要重 写一次

当一个类实现多个接口时,如果多个接口中默认方法有重名的,且参数一样的,必须 重写一次默认方法

(五)接口和抽象类的区别

相同点:

(1)都位于继承体系的顶端,用于被其他类实现或者继承

(2)都不能new

(3)都包含抽象方法,其子类或者实现类都必须重写这些抽象方法

不同点:

(1)抽象类:一般作为父类使用,可以有成员变量,构造,成员方法,抽象方法等

(2)接口:成员单一,一般抽取接口,抽取的都是方法,视为功能的大集合

(3)类不能多继承,但是接口可以

二.多态

1.面向对象三大特征:封装 继承 多态

2.怎么学:

(1)不要从字面上理解多态两个字,要从使用形式上掌握

(2)要知道多态的好处

(3)要知道多态的前提

(一)多态的介绍

1.前提

(1)必须有子父类继承或者接口实现关系

(2)必须有方法的重写(没有重写,多态没有意义),多态主要玩的是重写方法

(3)new对象:父类引用指向子类对象

Fu fu = new Zi() ->理解为大类型接收了一个小类型的数据 -> double b = 10

2.注意

多态下不能直接调用子类特有功能

(二)多态的基本使用

(三)多态条件下成员的访问特点

1.成员变量

看等号左边是谁,先调用谁的变量

2.成员方法

看new的是谁,就先调用谁的成员方法,子类没有找父类

(四)多态的好处

1.问题描述:

如果使用原始的方式neew对象(等号左右两边一样),既能调用重写的,还能调 用继承的,还能调用自己特有的成员,但是多态方式new对象,只能调用重写的, 不能直接调用子类特有的成员,那为啥还要用多态呢?

2.多态方式和原始方式new对象的优缺点:

原始方式:

(1)优点:既能调用重写的,还能调用父类非私有的,还能调用自己特有的

(2)缺点:扩展性差

多态好处:

(1)优点:扩展性强

Fu fu = new Zi()

double b = 10;

b = 100L;

(2)缺点:不能直接调用子类特有功能

形参传递父类类型,调用此方法父类类型可以接收任意它的子类对象

传递哪个子类对象,就指向哪个子类对象,就调用哪个子类对象重写的方法

(五)多态中的转型

1.向上转型

(1)父类引用指向子类对象

好比是:double b = 1;

2.向下转型

(1)好比是强转,将大类型强转成小类型

(2)表现方式:

父类类型 对象名1 = new 子类对象() -> 向上转型 -> double b = 1

子类类型 对象名2 = (子类类型)对象名1 -> 向下转型 -> int i = (int)b

3.想要调用子类特有功能,需要向下转型

(六)转型可能会出现的问题

1.如果等号两边类型不一致,会出现类型转换异常(ClassCastException)

2.解决:

在向下转型之前,先判断类型

3.怎么判断类型:instanceof

判断结果是boolean型

4.使用:

对象名 instanceof 类型 -> 判断的是关键字前面的对象是否符合关键字后 面的类型

标签:11,调用,子类,多态,接口,面向对象,方法,public
From: https://www.cnblogs.com/swh666/p/18396545

相关文章

  • 7.面向对象
    MODULE7 面向对象1.知道为啥使用面向对象思想编程2.知道怎么使用面向对象思想编程3.知道什么时候使用面向对象思想编程4.会利用代码去描述世间万物的分类5.会在一个类中访问另一个类中的成员->new对象6.成员变量和局部变量的区别一、类和对象(一)面向对象的介绍1.面向过程:自己......
  • 9.面向对象(1)
    MODULE9 面向对象1.会定义静态成员以及会调用静态成员2.会使用可变参数(会给可变参数传参)3.会二分查找(手撕)4.会冒泡排序(手撕)5.会debug的使用一、static关键字(一)static的介绍以及基本使用1.概述:static是一个静态关键字2.使用:(1)修饰一个成员变量:static数据类型变量名(2)修饰一个方......
  • 基于java的个性化图书推荐系统(11181)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发......
  • 基于springboot的乡村政务办公系统(11191)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 从 iPhone 14/13/12/11/Xs Max/Xs 恢复已删除的联系人
    拥有iPhone14/13,您肯定不希望设备发生任何意外,尤其是数据丢失。但意外总是难免,比如您发现重要的联系人在iPhoneXsMax或iPhoneXs上不见了。那么,您有什么办法可以恢复它们呢? 常见导致iPhone联系人丢失的原因操作不当导致联系人丢失;手机病毒感染;恢复至出厂设置而......
  • 滚雪球学MyBatis-Plus(11):多数据源配置
    前言在上期内容中,我们详细介绍了如何使用MyBatisPlus的代码生成器。通过代码生成器,我们能够根据数据库表结构自动生成实体类、Mapper接口、服务类、控制器和XML映射文件,大大提高了开发效率,并减少了重复劳动。同时,我们还探讨了如何进行代码生成器的自定义配置,使其生成......
  • Python 之面向对象
    __slots__限制类的绑定属性__str__:print打印对象,返回用户看到的字符串__repr__:返回程序开发者看到的字符串,如直接输入变量,是为调试服务的classStudent(object):def__str__(self):return'Studentobject(name:%s)'%self.nameprint(Student('hell0'))可以直......
  • Linux 内核 6.11 RC6 发布!
    2024年9月2日,Linux内核开发者LinusTorvalds宣布了Linux内核6.11的第六个候选版本(RC6)的发布。与以往的发布时间相比,由于Torvalds正在国外旅行,这次的RC6提前半天发布。这是6.11版本开发周期的又一部分,主要是继续修复和稳定系统的各个组成部分,特别是文件系统、......
  • 读书笔记(11)《围城》
    序言钱钟书先生最经典的作品,也是仅有的一部长篇小说,堪称中国现代文学史上风格独特的讽刺经典,被誉为“新儒林外史”,自上世纪八十年代以来一直横贯常销、畅销小说之首。小说塑造了抗战初期以方鸿渐为主的一类知识分子群像,记叙了他们所面临的教育、婚姻和事业困境。虽然有具体的历史......
  • 11个行之有效的方法帮助建立持久的客户关系
    有些机构能够建立起稳固的客户基础,并在多年的发展中不断加强,而另一些则经历风雨后最终关闭。那么差别在哪里呢?答案是客户关系。良好的客户关系能带来项目和活动的巨大成功,忠诚的客户会长期保持合作并介绍新客户,品牌声誉也会因此提升。更棒的是,这还能让日常工作更加愉快。那么,......