java 多态 接口_从零开始的Java日常: 多态,抽象类,接口

欢迎关注微博:@小白程序员的日常

欢迎关注微博超话:#小白程序员的日常#

本人目前在自学java,会不间断更新java知识

同为小白或者有大佬可以一起探讨一下5a6248719eab539b6cda4d7ca48f5a7b.png

一.多态

1.什么是多态

同一个对象,在不同的时刻表现出不同的形态.

猫,狗也可以称之为是动物.

例:

猫 a = new 猫();

动物 b = new 猫();

2.多态的前提(必须同时拥有以下三种)

1.继承/实现关系

2.方法的重写

3.父类引用指向子类对象.

3.多态中成员访问的特点:

成员变量:编译看左边,运行看左边(父类)

成员方法:编译看左边,运行看右边

静态成员:编译看左边,运行看左边

例:

多态中成员方法的编译与运行

狸猫换太子:

类型 太子 = new 狸猫();

对外被叫做太子(属性,成员变量),外表显示也是太子(属性,成员变量),但是实际 上进行行为(成员方法)的是狸猫,所以会输出狸猫的行为.

4.多态的好处和弊端

好处:提高代码的扩展性

弊端:不能直接访问子类特有的功能

5.多态的转型

向上转型:就是多态

父类引用指向子类对象

向下转型: 还原成原有的数据类型(也可以是原有类型的父类类型).

格式:

子类类型 变量名称 = (子类类型)父类引用;

二.抽象类

1.描述

什么时候要将方法定义成抽象的方法:

当父类不知道子类该如何去实现该方法的时候,父类将他定义成抽象方法,由子类自身重写方法具体实现.

抽象方法有什么特点:

没有具体的实现方法体.只是声明定义了方法而已,并没有实现方法体.

注意:

如果一个类中,有抽象方法,那么该类必须是一个抽象类.

2.使用什么关键字定义抽象类和抽象方法

使用abstract关键字定义

3.抽象类的特点

1.抽象类和抽象方法都必须使用 abstract关键字来修饰

2.抽象方法所在的类,必须是一个抽象类

3.抽象类不能被实例化(不能被创建对象)

4.抽象类的子类要么重写父类中所有的抽象方法,要么子类本身也是一个抽象类.

5.抽象方法都是提供给子类使用的,自身没有什么实际作用.

注意:

抽象类中可以有构造方法.目的就是为了初始化成员变量.

4.抽象类中的成员

成员变量  --> 描述事物的属性的

成员方法  --> 描述事物的行为的

抽象方法  --> 给子类定义规则的

构造方法  --> 初始化本类的成员变量的

三.接口

1.什么是接口

接口就是一种公共的规范标准,只要符合规范标准,都可以使用

java中的接口更多的体现在对行为的抽象

2.接口的特点:

定义一个接口: 格式

public interface 接口名{}

类与接口的关系 --> 实现

public class A implements 接口{}

接口不能直接实例化

子类要么重写接口中所有的抽象方法,要么该实现类是一个抽象类

3.接口中的成员

1.常量

[public][static][final] 数据类型 变量名称 = 值;  //其中中括号中的字是可以不用写的

2.抽象方法

[public][abstract] 返回值类型 方法名称(参数列表);  //其中中括号中的字是可以不用写的

注意:

在接口中是没有构造方法的(一定要写构造方法会指向祖宗类).

Object是所有类的父类(祖宗),所有的类都直接或者间接的基础了Obejct类

4.类,接口的关系

类与类之间的关系:继承关系,而且是单继承,可以多层继承

类与接口之间的关系:实现关系, 一个类可以同时实现多个接口

接口与接口之间的关系: 继承关系,而且是多继承

5.抽象类和接口的区别

抽象类:

在描述的过程中,有可能出现的一些行为不能具体的进行描述,可以将该行为变   成抽象的描述(不具体描述功能的实现).像这种不能直接具体描述行为的实现   的类我们称之为 --> 抽象类.

作用:一般都是作为父类,提取的都是所有子类所共有的.

接口:

作用:指定规则,规范,提供标准的.  这些都是通过行为来进行表现的.

主要就是用来描述行为的.不是给某一类事物进行描述的,谁适合使用就是给谁用的.

语法(使用上)的区别:

抽象类中可含有:

成员变量,成员方法,构造方法,静态变量,静态方法,抽象方法

接口中可含有:

常量,抽象方法

相同点:

都可以有抽象方法,都可以有常量. 都不能直接实例化

总结:

接口的出现就是为了弥补类的单一继承性.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值