Java中多态、抽象类和接口

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

2:多态(掌握)	(1)同一个对象在不同时刻体现出来的不同状态。	(2)多态的前提:		A:有继承或者实现关系。		B:有方法重写。		C:有父类或者父接口引用指向子类对象。

		多态的分类:			a:具体类多态				class Fu {}				class Zi extends Fu {}

				Fu f = new Zi();			b:抽象类多态				abstract class Fu {}				class Zi extends Fu {}

				Fu f = new Zi();			c:接口多态				interface Fu {}				class Zi implements Fu {}

				Fu f = new Zi();	(3)多态中的成员访问特点		A:成员变量			编译看左边,运行看左边		B:构造方法			子类的构造都会默认访问父类构造		C:成员方法			编译看左边,运行看右边		D:静态方法			编译看左边,运行看左边

		为什么?			因为成员方法有重写。	(4)多态的好处:		A:提高代码的维护性(继承体现)		B:提高代码的扩展性(多态体现)	(5)多态的弊端:		父不能使用子的特有功能。

		现象:			子可以当作父使用,父不能当作子使用。	(6)多态中的转型		A:向上转型			从子到父		B:向下转型			从父到子	(7)孔子装爹的案例帮助大家理解多态	(8)多态的练习		A:猫狗案例		B:老师和学生案例
3:抽象类(掌握)	(1)把多个共性的东西提取到一个类中,这是继承的做法。	   但是呢,这多个共性的东西,在有些时候,方法的声明一样,但方法体不一样。	   也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。	   所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。	   而一个没有具体的方法体的方法是抽象的方法。	   在一个类中如果有抽象方法,该类必须定义为抽象类。	(2)抽象类的特点		A:抽象类和抽象方法必须用关键字abstract修饰		B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类		C:抽象类不能实例化		D:抽象类的子类			a:是一个抽象类。			b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。	(3)抽象类的成员特点:		A:成员变量			有变量,有常量		B:构造方法			有构造方法		C:成员方法			有抽象,有非抽象	(4)抽象类的练习		A:猫狗案例练习		B:老师案例练习		C:学生案例练习		D:员工案例练习	(5)抽象类的几个小问题		A:抽象类有构造方法,不能实例化,那么构造方法有什么用?			用于子类访问父类数据的初始化		B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?			为了不让创建对象		C:abstract不能和哪些关键字共存			a:final	冲突			b:private 冲突			c:static 无意义
4:接口(掌握)	(1)回顾猫狗案例,它们仅仅提供一些基本功能。	   比如:猫钻火圈,狗跳高等功能,不是动物本身就具备的,	   是在后面的培养中训练出来的,这种额外的功能,java提供了接口表示。	(2)接口的特点:		A:接口用关键字interface修饰			interface 接口名 {}		B:类实现接口用implements修饰			class 类名 implements 接口名 {}		C:接口不能实例化		D:接口的实现类			a:可以是一个抽象类。			b:可以是一个具体类,这个类必须重写接口中的所有抽象方法。	(3)接口的成员特点:		A:成员变量			只能是常量			默认修饰符:public static final		B:构造方法			没有构造方法		C:成员方法			只能是抽象的			默认修饰符:public abstract	(4)类与类,类与接口,接口与接口		A:类与类			继承关系,只能单继承,可以多层继承		B:类与接口			实现关系,可以单实现,也可以多实现。			还可以在继承一个类的同时,实现多个接口		C:接口与接口(重点)			继承关系,可以单继承,也可以多继承	(5)抽象类和接口的区别(自己补齐)?		A:成员区别			抽象类:可以是变量,也可以是常量;有抽象方法也有非常像方法。			接口:常量;只能是抽象方法。		B:关系区别:			类与类:继承关系,可以单实现,可以多层实现			类与接口:实现关系,可以单实现,也可以多实现。可以在继承一个类的同时继承多个接口。			接口与接口:继承关系,可以单继承,也可以多继承。		C:设计理念不同			抽象类:is a,抽象类中定义的是共性功能。			接口:like a,接口中定义的是扩展功能。	(6)练习:		A:猫狗案例,加入跳高功能		B:老师和学生案例,加入抽烟功能0
时间: 2024-07-31 01:55:43

Java中多态、抽象类和接口的相关文章

JAVA中的抽象类和接口

一 抽象类 抽象类就是不能被实例化的类,即不可以用new运算符创建本类的对象.在实际应用中,抽象类应该具有子类,且其子类一般不为抽象类. java中使用抽象类的原因有如下四点: 1.抽象类是较高层次的概括,其他的类可以继承它的抽象化特征: 2.抽象类包括它的所有子类共享的公共行为和公共属性,即抽象类中定义一些属性和方法,其他类继承该抽象类并实现这些属性和方法: 3.抽象类使编写程序更贴近人类的思维方式和客观世界: 4.在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性. 二 接口 在接口

Java 中的抽象类及接口

抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,避免子类设计的随意性. 抽象类的使用规则: 1.使用 abstract 定义抽象对象: 2.abstract 定义抽象方法,只有声明,不需要实现: 3.包含抽象方法的类是抽象类: 4.抽象类中可以包含普通的方法,也可以没有抽象方法: 5.抽象类不能直接创建,可以定义

关于JAVA中的抽象类和接口中常量和变量定义的原因

转载自https://my.oschina.net/cdzsc/blog/86107 在抽象类中,可以包含一个或多个抽象方法:但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加"抽象". 1. 为什么接口中只能定义static final:     1.1 static(这时暂且认为是变量)解释:因为一个类可以实现多个接口,如果一个类同时实现了多个接口而每个接口中都定义了同一个变量的话就会产生在类中不知道是哪个接口中的变量了,所以必须定义成stat

java中的抽象类和接口详解

1.抽象类 /** 1. 抽象方法一定存在于抽象类中,抽象方法和抽象类需要abstract修饰! 2. 抽象类不能实例化. 3. 如果抽象类中多个抽象方法,而其子类只继承了一个抽象方法,则该子类为抽象类,故也无法实力化. 4. 抽象类只能被子类覆盖其全部的抽象方法,才能建立子类对象! 5. 抽象类中可以有非抽象方法 */ //该子类未覆盖父类func1的抽象方法,故子类为抽象类,不能实例化.编译失败 abstract class Person{     abstract void func();

java中的抽象类与接口

抽象类: 用关键字abstract(位于class关键字之前的任何位置)修饰的类叫做抽象类,抽象类不能被实例化,即不能new出来一个抽象类的对象(实例). 对于关键字abstract---->可选修饰符(static.final.abstract)一般可以共存,但abstract与static.final都不能同时共存(理解其的真正含义) 抽象方法: 用abstract关键字所修饰的方法叫做抽象方法. 抽象方法必须定义在抽象类中. 抽象方法有声明,无实现(没有花括号{},有花括号但是内容为空也是

Java读书笔记十四(java中的抽象类)

前言 在java中,有时候需要对类的行为进行提取,因此也就有了抽象类和接口的概念,这篇博客,小编来剖一下java中的抽象类和接口.  抽象方法和抽象类 抽象方法和抽象类的规则如下: 1.抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽线方法不能有方法体 2.抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例.即使抽象类里不可包含抽象方法,这个抽象类也不能被创建实例. 3.抽象类可以包含成员变量.方法(普通方法和抽象方法都可以

Java语言中的----抽象类、接口

day12  Java语言中的抽象类与接口 一.抽象类和接口概述; 在昨天我们学习了Java的继承功能,这个是一个核心知识点,今天我们再继承的基础之上学习一下抽象类和接口这两个知识.什么是抽象类?如何定义一个抽象类?如何使用一个抽象类?这些都是我们需要掌握的. 同时我们还要知道如何来定义一个接口,在开发中定义接口来实现相关的功能是一个很重要的功能.如何来实现接口中的抽象方法,这些在这一节都会说到. 二.抽象类和接口 1.抽象类: 什么是抽象类?包含抽象方法的类就叫做抽象类 .使用abstract

Java中多态的一些简单理解

什么是多态 1.面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 2.多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 3.实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 4.多态的作用:消除类型之间的耦合关系. 5.现实中,关于多态的例子不

个人对Java中多态的一些简单理解

什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 多态的作用:消除类型之间的耦合关系. 现实中,关于多态的例子不胜枚举. 下面是多态

java 中的2个接口 Comparable和Comparator

像Integer.String这些类型的数据都是已经实现Comparable接口的,所以对这些类型可以直接通过Arrays.sort(...)和Collections.sort(...)方法进行排序.但是对于一些自己new出来的对象而言,如果想使用sort这种方法,必须要实现Comparable接口,这是由sort方法底层决定的,具体看一下实例: 定义一个Bean public class Employee implements Comparable{ private int age;  pri