- 浏览: 69777 次
- 性别:
- 来自: 天津
文章分类
最新评论
第一:在引入接口之前,首先要知道什么是抽象类。下面是关于抽象类的定义格式:
abstract class absClass
{
public void show()
{
//这是一个非抽象的方法,下面是个抽象方法。
}
public abstract void method();
}
第二:由抽象类引出接口:
如果一抽个象类中方法全部为抽象方法,该抽象类可以为一个接口接口是抽象类的特殊形式,或者说接口就是彻底的抽象。
第三:接口的定义格式:全部是抽象方法
interface 接口名
{
public void method();
........
}
第四:接口的实现(使用):接口是一种约束、规定
class 类名(实现类) implements 接口名
{
重写接口中的抽象方法
}
第五:总结
1.抽象类里可以有不抽象的方法,但是接口里的方法必须都是抽象的
2.实现类在继承接口之后,必须重写接口中的全部抽象方法,否则此实现类无法编译成功。
3.如果实现类不想重写接口中的抽象方法,那么此实现类就需要定义成抽象类(因为定义成抽象类之后就可以不用重写抽象方法了,因为抽象类里可以有抽象方法)
4.当抽象类里都是抽象方法的时候就定义为接口,接口里的抽象类不用不用写abstract,因为默认为abstract了
5.在接口中的属性int a=1;其实是在接口中写了public static final int a=1;也就是说接口中的变量默认为常量。注释:其实在项目中经常用到接口,比如dao的impl层
6.单继承多实现(一个类只能继承一个父类(如果继承两个类,而且两个类中有方法名一样的方法的时候,子类运行的时候就不知道是继承的哪个父类的方法了),但是可以实现多个接口)
7.多继承多实现(一个接口可以多继承(首先:接口的多继承指的是继承多个接口,第二:由于继承的父类也都是接口,因此即使多个父类之间有相同的方法名的时候也没事,反正每个父类中的该方法都没有方法体),多实现)
第六:抽象类与接口的关系:
1.当父类中的方法都为抽象方法的时候,此时把父类用interface关键字修饰,把此父类里面的所有抽象方法用abstract来修饰,abstract可以省略不写。
2.抽象类和类之间是继承关系,接口和类之间是实现关系。因此抽象类定义的是整个系统中的基本功能(因为子类继承抽象类之后必须重写抽象类中的抽象方法,否则此子类也是抽象的或者子类就会报错了),接口定义整个系统中的扩展功能(我们把每个子类都必须用到的方法,并且父类的该方法体不知道该写什么(因为即使父类写了方法体也会被众多子类重写掉)的时候,该方法可以写在抽象类中作为抽象方法;但是某些抽象方法不是买个子类都会用到,此时就把这个扩展方法写在接口中,哪个子类想用哪个子类就去实现该口)
--------------------------------------------------
下面是多肽:
第一:在学习多肽之前,我们就已经在用多肽的理论了:
比如说,方法的重载就是多肽,当我们传入的实参不同的时候,就会得到不同的返回值(结果)。这就是我们身边的方法多肽。我们此时学习的多肽是对象多肽
第二:(对象多肽)多肽的概念:一个对象能够表现不同的形态(同一个引用表现不同的行为)。
当引用数据类型的变量的数据类型和所引用的值的类型不一致的时候,有可能发生多态(等号两边的类型不一致的时候)
第三:继承和多肽的区别:
Zi zi=new zi();//这是继承
Fu fu=new zi();//这是多肽,等号两边类型不一致
注意:
1.Fu fu=new zi()是编译时看左边,运行时看右边。
2.此时调用一下:fu.show(),编译的时候是编译父类,运行的时候,如果子类重写了父类的show方法,那么此时会执行子类的show方法,否则会执行父类的show方法。
3.fu.ziMthod()的时候会报错,因为父类中没有ziMthod()方法,编译的时候看父类,因此编译的时候会报错。也就是说多肽不能访问子类特有的功能(根据多肽的定义:一个对象能够表现出不同的形态也能看出,是在说父类中的方法,而不是子类特有的方法)。
4.Fu fu=new zi()这种写法是在程序中是发生了向上转型(也就是在编译的时候是在编译父类),向上转型只能访问父类中声明过的方法,而且是自动发生的(将子类对象转型成父类的引用)。
5.动态绑定:多肽在发生向上转型之后必定会产生动态绑定(向上转型是多肽的编译时期,动态绑定是发生在运行时期)。
编译的时候不知道具体的对象类型(例如动物类),只有程序运行的时候才能将具体的对象绑定到相应的对象中(此时才知道具体绑定的是猫还是狗)。
6.Fu fu = new Zi();//继承多态
Inter it =new InterImpl(); //接口多态
----多肽的代码
public class Fu
{
public void show()
{
System.out.println("-------this is fu");
}
public void method()
{
System.out.println("-------this method fu");
}
}
public class Zi extends Fu
{
//重写父类中的方法
public void show()
{
System.out.println("-----this is zi");
}
public void ziMethod()
{
System.out.println("-----this ziMethod zi");
}
public static void main(String[] args)
{
//Zi zi = new Zi();
//zi.show();
//zi.method();
//z1.ziMethod();
//当引用数据类型的变量的数据类型和所引用的值的类型
//不一致的时候,有可能发生多态
Fu fu = new Zi();
//fu.method();
//fu.ziMthod();
fu.show();
/**
当程序编译看=的左边
运行的时候看=的右边(1 如果有重写发生,调用自己的
2 如果没有重写发生,调用父类的)
*/
}
}
abstract class absClass
{
public void show()
{
//这是一个非抽象的方法,下面是个抽象方法。
}
public abstract void method();
}
第二:由抽象类引出接口:
如果一抽个象类中方法全部为抽象方法,该抽象类可以为一个接口接口是抽象类的特殊形式,或者说接口就是彻底的抽象。
第三:接口的定义格式:全部是抽象方法
interface 接口名
{
public void method();
........
}
第四:接口的实现(使用):接口是一种约束、规定
class 类名(实现类) implements 接口名
{
重写接口中的抽象方法
}
第五:总结
1.抽象类里可以有不抽象的方法,但是接口里的方法必须都是抽象的
2.实现类在继承接口之后,必须重写接口中的全部抽象方法,否则此实现类无法编译成功。
3.如果实现类不想重写接口中的抽象方法,那么此实现类就需要定义成抽象类(因为定义成抽象类之后就可以不用重写抽象方法了,因为抽象类里可以有抽象方法)
4.当抽象类里都是抽象方法的时候就定义为接口,接口里的抽象类不用不用写abstract,因为默认为abstract了
5.在接口中的属性int a=1;其实是在接口中写了public static final int a=1;也就是说接口中的变量默认为常量。注释:其实在项目中经常用到接口,比如dao的impl层
6.单继承多实现(一个类只能继承一个父类(如果继承两个类,而且两个类中有方法名一样的方法的时候,子类运行的时候就不知道是继承的哪个父类的方法了),但是可以实现多个接口)
7.多继承多实现(一个接口可以多继承(首先:接口的多继承指的是继承多个接口,第二:由于继承的父类也都是接口,因此即使多个父类之间有相同的方法名的时候也没事,反正每个父类中的该方法都没有方法体),多实现)
第六:抽象类与接口的关系:
1.当父类中的方法都为抽象方法的时候,此时把父类用interface关键字修饰,把此父类里面的所有抽象方法用abstract来修饰,abstract可以省略不写。
2.抽象类和类之间是继承关系,接口和类之间是实现关系。因此抽象类定义的是整个系统中的基本功能(因为子类继承抽象类之后必须重写抽象类中的抽象方法,否则此子类也是抽象的或者子类就会报错了),接口定义整个系统中的扩展功能(我们把每个子类都必须用到的方法,并且父类的该方法体不知道该写什么(因为即使父类写了方法体也会被众多子类重写掉)的时候,该方法可以写在抽象类中作为抽象方法;但是某些抽象方法不是买个子类都会用到,此时就把这个扩展方法写在接口中,哪个子类想用哪个子类就去实现该口)
--------------------------------------------------
下面是多肽:
第一:在学习多肽之前,我们就已经在用多肽的理论了:
比如说,方法的重载就是多肽,当我们传入的实参不同的时候,就会得到不同的返回值(结果)。这就是我们身边的方法多肽。我们此时学习的多肽是对象多肽
第二:(对象多肽)多肽的概念:一个对象能够表现不同的形态(同一个引用表现不同的行为)。
当引用数据类型的变量的数据类型和所引用的值的类型不一致的时候,有可能发生多态(等号两边的类型不一致的时候)
第三:继承和多肽的区别:
Zi zi=new zi();//这是继承
Fu fu=new zi();//这是多肽,等号两边类型不一致
注意:
1.Fu fu=new zi()是编译时看左边,运行时看右边。
2.此时调用一下:fu.show(),编译的时候是编译父类,运行的时候,如果子类重写了父类的show方法,那么此时会执行子类的show方法,否则会执行父类的show方法。
3.fu.ziMthod()的时候会报错,因为父类中没有ziMthod()方法,编译的时候看父类,因此编译的时候会报错。也就是说多肽不能访问子类特有的功能(根据多肽的定义:一个对象能够表现出不同的形态也能看出,是在说父类中的方法,而不是子类特有的方法)。
4.Fu fu=new zi()这种写法是在程序中是发生了向上转型(也就是在编译的时候是在编译父类),向上转型只能访问父类中声明过的方法,而且是自动发生的(将子类对象转型成父类的引用)。
5.动态绑定:多肽在发生向上转型之后必定会产生动态绑定(向上转型是多肽的编译时期,动态绑定是发生在运行时期)。
编译的时候不知道具体的对象类型(例如动物类),只有程序运行的时候才能将具体的对象绑定到相应的对象中(此时才知道具体绑定的是猫还是狗)。
6.Fu fu = new Zi();//继承多态
Inter it =new InterImpl(); //接口多态
----多肽的代码
public class Fu
{
public void show()
{
System.out.println("-------this is fu");
}
public void method()
{
System.out.println("-------this method fu");
}
}
public class Zi extends Fu
{
//重写父类中的方法
public void show()
{
System.out.println("-----this is zi");
}
public void ziMethod()
{
System.out.println("-----this ziMethod zi");
}
public static void main(String[] args)
{
//Zi zi = new Zi();
//zi.show();
//zi.method();
//z1.ziMethod();
//当引用数据类型的变量的数据类型和所引用的值的类型
//不一致的时候,有可能发生多态
Fu fu = new Zi();
//fu.method();
//fu.ziMthod();
fu.show();
/**
当程序编译看=的左边
运行的时候看=的右边(1 如果有重写发生,调用自己的
2 如果没有重写发生,调用父类的)
*/
}
}
发表评论
-
二分法、冒泡排序
2017-03-03 10:31 324import java.util.Scanner;/** ... -
for、while循环,打印三角形、菱形
2017-03-03 09:54 519import java.util.Scanner;publi ... -
单线程与多线程
2016-01-16 12:10 589单线程:按照程序 ... -
字节流,字符流,对象流,序列化,持久化
2016-01-15 11:25 642第一:读写字符串 input(读文件里的内容) 的步骤: ... -
深入反射、IO文件、字节流
2016-01-15 11:11 439第一:反射相关的概念 1.反射中调用构造函数默认都是调用 ... -
百度字符串
2016-01-07 17:41 5271、length() 字符串的长度 例:char char ... -
map集合转化成list集合
2015-12-28 15:52 1619package emp; public class Emp ... -
反射
2015-12-28 15:47 389第一:反射的概念 1.(1).java程序源文件(属性和 ... -
泛型
2015-12-28 15:24 379第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存 ... -
map集合和他的实现类hasHmap(不安全)和hashTable(安全)
2015-12-28 15:15 581第一:初步认识map 1.键值对(key与value是一一 ... -
set接口和它的实现类treeset和hashset
2015-12-01 22:50 513第一:set接口:set接口里面的元素不能重复,因此nul ... -
Collection集合根接口、两个子接口list和set
2015-11-30 22:29 589第一:由数组的 ... -
String与StringBuffer、Date日期与SimpleDateFormat 简单的日期格式化
2015-11-29 22:31 614第一:String类:字符串常量1.String是一个类, ... -
异常与异常类
2015-11-25 22:58 370第一.异常的概念:异常就是程序在运行中的错误,程序中的异常用异 ... -
快捷键
2015-11-24 23:06 2641.导包:ctrl+shift+O 2.找类:ctrl+shi ... -
向下转型与instanceof 关键字,object类(系统类)中的常用方法
2015-11-24 23:02 915第一:向下转型 1.向下 ... -
关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的
2015-11-22 17:02 829----继承 1.extends的是继承或者扩展的意思。父类写 ... -
由static引出单例模式
2015-11-22 16:20 288单例模式的特点:保证在整个应用程序中只存在一个对象 单例模式的 ... -
this和static关键字,javadoc文档的产生
2015-11-22 15:51 306----this和static关键字 public class ... -
java内存分析
2015-11-22 15:16 2371.局部变量中的引用类型是把地址存到栈内存中,由栈内存中的地址 ...
相关推荐
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
抽象类与接口 抽象类与接口 抽象类与接口 抽象类与接口
Java抽象类与接口实验报告
抽象类、反射、动态绑定、及接口的使用 rar压缩文件
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结
抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
java 抽象类与接口的练习,包括代码及注释,个人笔记
抽象类与接口的区别,抽象类与接口的具体应用
主要介绍接口与抽象类的区别,为那些困惑的人指点迷津。
抽象类和接口实验报告
第7章 抽象类与接口.ppt第7章 抽象类与接口.ppt
(4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 (5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个...
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
深入浅出的说明java抽象类与接口区别,让初学者更好的理解java抽象类与接口的概念
详细介绍了dot Net中抽象类与接口的区别 3.1 相同点 • 都不能被直接实例化,都可以通过继承实现其抽象方法。 • 都是面向抽象编程的技术基础,实现了诸多的设计模式。 3.2 不同点 • 接口支持多...
11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别....
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...
学生通过对该项目整体框架的搭建和对动物城信息管理等模块的设计与功能实现,训练了学生对项目框架的搭建、类的封装、抽象类定义与继承、接口的定义与接口的实现等Java OOP面向对象知识点的掌握。 本项目主要包括...
10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和...