一、接口:是Java语言中一种引用类型【组数、类也是引用类型】,内部主要就是封装了方法,

包括(抽象方法、默认方法、静态方法、私有方法)

  格式:
public interface 接口名称 {
// 抽象方法 作用:该方法供子类实现使用
public abstract void show1();
// 抽象方法简写
void show2();
// 默认方法: 使用 default 修饰,不可省略,供子类调用或者子类重写 作用为了防止在接口升级中,而不音响子类对接口的实现,lambda表达式
default void show3(){}
// 静态方法: 使用 static 修饰,供接口直接调用
static void show4(){}
// 私有方法: 供接口中的默认方法或者静态方法调用。
private void show5()
}

二、接口的多实现: 一个类是可以实现多个接口

  格式:
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
} 特点:
接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次。
接口中,有多个默认方法时,实现类都可继承使用。如果默认方法有重名的,必须重写一次。
接口中,无法定义成员变量,但可以定义常量,默认的修饰public static final修饰
格式:public static final 数据类型 常量名 =
接口中,无构造方法,无方法创建对象
接口中,没有静态代码块。

三、多态:一个对象拥有多种形态

例:小明是一个学生,同时也是一个人,即小明这个对象即拥有学生形态,也拥有人类形态

  使用多态的前提【重点】
1 . 继承或者实现【二选一】
2. 方法的重写【意义体现:不重写,无意义】
3. 父类引用指向子类对象【格式体现】 格式:
父类类型 变量名 = new 子类名称()-->父类引用指向子类对象
或者
接口名称 变量名 = new 实现类名称() 多态下成员方法访问规则:
变量名.方法名a(); //看右边 new 的是谁就运行谁的方法,条件:子类重写父类的情况下
变量名.方法名b(); //该方法是父类特有的方法,此时将 new 子类名称()当作 new 父类名称()使用
a、看 new的谁,就优用先,没有则向上找,条件:子类重写父类的情况下 多态下成员变量访问规则:
a、直接通过对象访问成员变量,看等号左边是谁,优先用谁,没有向上找
b、间接通过成员方法访问成员变量,看该方法属于谁,优先用水,没有向上找 定义子类:
public class Zi extends Fu{
@Override
public void method() {
System.out.println("子类的方法.....");
}
int num = 20;
} 定义父类:
public class Fu {
public void method(){
System.out.println("父类方法.....");
}
public void methodFu(){
System.out.println("父类特有方法.....");
}
int num = 10;
int sum = 50;
public void shou(){System.out.println(sum)}; } 测试:
public class DemoTest {
public static void main(String[] args) {
System.out.println("...<多态下使用成员方法>...");
Fu f = new Zi();
f.method(); //父子类都有,优先用子
f.methodFu(); //子类没有,父类有,向上找到父类
System.out.println("...<多态下使用成员变量>...");
System.out.println(f.num);
f.shou();
}
}

四、引用类型转换

        向上转型:多态本身写法,父类引用指向一个子类对象时,便是向上转型
格式:
父类类型  变量名 = new 子类类型();
如:Animal animal  = new Cat(); 创建一只猫,把它当做动物看待
含义:右侧创建一个对象,把它当做父类来看待
注意事项:向上转型一定是安全的,从小范围转向大范围 存在问题:向上转型,不能访问子类特有的方法,所以需要向下转型 向下转型:其实是一个【还原】的动作
格式:子类类型 对象名 = (子类类型)父类对象
含义:将父类对象,【还原】成为本来的子类对象 Animal animal = new Cat(); //本来是猫,向上转型成为动物
Cat cat = (Cat)animal; //本来是猫,已经被当做动物了,还原回来成为本来的猫
注意事项:
a、必须保证对象本来创建的时候,就是猫,才能向下转型成为猫
b、如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错 变量名 instanceof 数据类型:这将会得到一个boolean直结果,也就是判断前面的对象能不能当做后面类型实例

java基础之接口、多态的更多相关文章

  1. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  2. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  3. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  4. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  5. java基础(11):接口、多态

    1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

  6. Java基础第二天--多态、接口

    多态 多态的概述 同一个对象,在不同时刻表现出来的不同形态 多态的前提和体现 有继承/实现关系 有方法重写关系 有父类引用指向子类对象 public class Animal { public voi ...

  7. java基础之接口(抽象类与接口的区别)

    概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...

  8. 【Java基础】接口和抽象类之间的对比

    Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

  9. Java基础学习小记--多态

    题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...

  10. JAVA基础之接口

    接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...

随机推荐

  1. uniapp去修改vuex中state中的值

    修改state中的值 修改state中的值,方法 (1) 在mutations中写修改state的api. (2)写好之后,直接store.commit("changeValue" ...

  2. 薄荷面 Bohemian

    我回来了.正如柯洁回到B站. 然后 我将使用知乎格式写作(指换行空一行) 因为<阑山>太长了,有二三十万字,一时半会儿摸不完,同时还在摸几篇短篇小说,还要搞一些什么新概念大赛.冰心作文之类 ...

  3. Q:以非root用户编辑定时任务报错You are not allowed to use this program(crontab)

    编辑定时删除文件任务时报错 crontab -e 编辑定时任务时报错,如下图所示 问题原因:/etc/cron.allow中没有添加对应的用户名解决办法:切换到root用户,在/etc/cron.al ...

  4. RabbitMQ(五)——发布订阅模式

    RabbitMQ系列 RabbitMQ(一)--简介 RabbitMQ(二)--模式类型 RabbitMQ(三)--简单模式 RabbitMQ(四)--工作队列模式 RabbitMQ(五)--发布订阅 ...

  5. CTFHub技能树-信息泄露wp

    信息泄露 信息泄露(Information Disclosure)通常指题目中意外暴露了敏感数据或隐藏信息,这些信息可能直接或间接帮助解题者获取Flag 常见类型如下: HTTP请求 robots协议 ...

  6. [SDOI2008] 洞穴勘测 题解

    似乎所有的线段树分治题都能被 \(LCT\) 平替掉? 一眼动态树,直接 \(LCT\). Connect x y 操作用 \(link(x,y)\) 实现,Destroy x y 操作用 \(cut ...

  7. [AHOI2013] 差异 题解

    后缀自动机维护子串公共后缀方便一点,所以直接倒序插入字符串即可. 我们给所有前缀打上标记,然后跑树形 \(dp\),设 \(sum_i\) 表示第 \(i\) 个点的子树内有多少个前缀,\(ans\) ...

  8. ((GPIO_TypeDef ) GPIOB_BASE)或((GPIO_TypeDef ) xxxx)

    ///////////////((GPIO_TypeDef ) GPIOB_BASE)或((GPIO_TypeDef ) xxxx)//////////////////// #define GPIOA ...

  9. 【.NET】调用本地 Deepseek 模型

    本篇咱们来聊一聊怎么在 .NET 代码中使用本地部署的 Deepseek 语言模型.大伙伴们不必要紧张,很简单的,你不需要学习新知识,只要你知道 .NET 如何访问 HTTP 和 JSON 的序列化相 ...

  10. QT5笔记: 21. QStandardItemModel

    QStandardItemModel 存放数据 QItemSelectionModel 选择项模型 例子:本例子中QListView 没有做任何处理,只是拖放至ui文件,设置了布局 mainwindo ...