Java基础针对自己薄弱环节总结04(面向对象多态)

一、多态的概念和前提

1、概念-什么是多态

对象在不同时刻表现出的不同的状态。

2、前提

A:要有继承关系或实现关系

B:要有方法重写或实现

C:要有父类引用指向子类对象,或父类接口指向子类对象

       3、举例:

       狗是动物

二、多态的成员特点

1、成员变量 

编译看左边,运行看左边

Fu f=new Zi();

f.name;//调用的是父类的name

2、非静态成员方法

Fu f=new Zi();

f.show();//调用的是子类的show

3、产生以上的原因

方法有重写,变量没有重写

三、多态的弊端和好处

弊端:父类引用不能直接使用子类对象的特有功能。

   解决方案:

           向下转型(强转)

好处:增强了程序的扩展性和可维护行

四、转型过程中出现的问题

java.lang.ClassCastException
: 
类型转换异常

     该异常产生的原因:类型不匹配

          一个父类的引用指向的是狗,要把这个父类的引用强制转换成猫,所以不行

          Animal animal = new Dog();

          Cat cat = (Cat)animal;//因为animal存储的是狗,强转成猫就会报错

五、抽象类和抽象方法

1、抽象方法

只有方法声明,没有方法体的方法成为抽象方法,该方法用abstract修饰

2、抽象类

如果一个类中含有抽象方法,这个类就可以成为抽象类,该类被abstract修饰

3、什么时候定义抽象类

如果一个方法我们不确定他要做什么,就把这个方法定义成抽象的,那么这个类就被定义成抽象类

4、抽象类的基本特定

    
   1、抽象类抽象方法用abstract修饰

2、有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法

3、抽象类不能被实例化

4、如果一个类继承抽象类,要么本身是抽象类,要么必须实现抽象方法

5、抽象类的作用

强制子类必须完成某种功能

6、抽象类的成员特点

1、成员变量:可以常量,可以变量

2、构造方法

   
 有构造方法,但是不能创建对象,只是用于子类访问父类数据时,对父类的              成员进行初始化。

3、成员方法

              可以有抽象方法,也可以有非抽象方法

六、接口

1、概念

我们可以把接口看成一种特殊的抽象类,比抽象更抽象。因为它里面的方法都是抽象的,但注意接口不是类,我们只是把它看成类

2、接口的基本特点

1、接口不能被实例化。

2、接口中的方法:

要么被子类重写。

要么子类也是抽象类。

3、接口的成员特点

1、成员变量:接口中只有常量

因为接口的成员变量有默认修饰符:public static final

推荐:永远自己给出修饰符。

2、构造方法

没有构造方法//因为接口中的成员变量都被final修饰,定义的时候必须做初始化

任何类如果没有继承父类,那么这个类就继承自Object类。//所有类都直接或者间接的继承自Object类。Object类是所有类的超类

3、成员方法:接口中的方法都是抽象的

因为接口中的成员方法有默认修饰符:public abstract

推荐:永远自己给出修饰符。

4、接口的注意事项

接口中不能有静态代码块,代码块,构造方法

4、接口与类,抽象类的关系

1、抽象类和接口的关系(掌握)

抽象类:

成员变量:可以是变量,也可以是常量。

构造方法:有构造方法。

成员方法:可以是抽象方法,也可以是非抽象方法。

接口:

成员变量:只能是常量。

默认修饰符:public
static final

成员方法:只能是抽象方法。

默认修饰符:public
abstract

2、类与接口的关系(掌握)

类与类:

继承关系,只能单继承,可以多层继承。

类与接口:

实现关系,可以单实现,也可以多实现。

还可以在继承一个类的同时,实现多个接口。

接口与接口:

继承关系,可以单继承,也可以多继承。

3、设计理念的区别

抽象类被继承,这个类中定义的是整个继承体现的共性内容。

体现:is a

接口被实现,这个接口中定义的是整个体现的扩展内容。

体现:like a

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 23:22:16

Java基础针对自己薄弱环节总结04(面向对象多态)的相关文章

Java基础针对自己薄弱环节总结03

一.说说面向对象思想 1.什么是面向对象 1)面向对象是以对象为基础的,完成各种操作,强调的是对象.结果. 2)面向过程是以函数为基础的,完成各种操作,强调的是过程. 3)面向对象是基于面向过程的. 2.面向对象的思想特点 1)一种更符合人们思考习惯的思想 2)把复杂的问题简单化 3)我们从执行者变成了指挥者 举例:自己买电脑vs让朋友帮忙买电脑 (面向过程) (面向对象) 二.类与对象 1.类是相关属性和行为的集合,是抽象的概念 2.对象是某种事物的具体存在,是具体的表象形式 举例:学生 (类

Java基础针对自己薄弱环节总结05(API、集合)

一.API中的一些方法 ** Arrays工具类 ** 1. 概念 针对数组操作的工具类 2. 成员方法 a) toString():public static String toString(数据类型[] 变量名)-–把数组变成字符串 b) sort():public static void sort(数据类型[] 变量名)--对数组进行排序 c) public static int binarySearch(int[] arr,int value)--二分查找 System类 1. 系统类,

JAVA基础针对自己薄弱环节总结01(循环之前的知识)

java中的标识符 组成:数字.字母.下划线.美元$符号组成. 规则:不能由数字开头. 类名:每一个单词的首字母大写 包名:所有小写 变量名.方法名:第一个单词首字母小写.后面首字母大写 常量:所有大写用下划线连接 凝视 单行凝视:// 多行凝视:/--/ (不能嵌套) 文档凝视:/*-../(能够被javadoc命令解析成Html文档(说明书)) 变量概述 格式一: 数据类型 变量名=初始化值: 格式二: 数据类型 变量名: 变量名=初始化值. 变量在使用前必须初始化. java中的数据类型

JAVA基础针对自己薄弱环节总结02(循环)

循环 A:水仙花. classShuiXianHua { public static void main(String[] args) { for(int i=101;i<1000;i++) { int ge=i%10; int shi=i/10%10; int bai=i/100%10; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i) System.out.print(i+""); } } } 结果: B:统计叠多少次,能叠成珠穆朗玛峰的高度.

JAVA基础针对自己薄弱环节总结01

java中的标识符 组成:数字.字母.下划线.美元$符号组成. 规则:不能由数字开头. 类名:每个单词的首字母大写 包名:全部小写 变量名.方法名:第一个单词首字母小写,后面首字母大写 常量:全部大写用下划线连接 注释 单行注释:// 多行注释:/--/ (不能嵌套) 文档注释:/*-../(可以被javadoc命令解析成Html文档(说明书)) 变量概述 格式一: 数据类型 变量名=初始化值: 格式二: 数据类型 变量名: 变量名=初始化值: 变量在使用前必须初始化. java中的数据类型 整

java基础2:抽象类、接口与多态

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用

java基础讲解09-----接口,继承,多态

还有什么包装类,数字类,这些简单的我就不想过去介绍,前面也大概的介绍了下,继承,多态 1.类的继承 继承的思想:基于某个父类的扩展,制定一个新的子类.子类可以继承父类原有的属性,方法,也可以重写父类的方法,也可以自己增加父类不具备的方法,属性 .使用extends关键字来标识继承关系 ( 重写方法的规则如下: 1. 参数列表:必须与被重写方法的参数列表完全匹配. 2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同 3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)

1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: A:局部变量 a:基本类型 值不能发生改变 b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 B:初始化时机 a:只能初始化一次. b:常见的给值 定义的时候.(推荐) 构造方法中. 2:多态(掌握) (1)同一个对象在不同时刻体现出来的不同状态. (2)多态的前提: A:有继承或者实