黑马程序员_抽象类_接口

---------     Java培训、Android培训、iOS培训、.Net培训  
 期待与您交流!  ------

一,抽象类:

1,抽象类的产生:

比如犬类事务,都具备吼叫的功能,但是叫声却不一样,叫声则是由具体的子类来赋予的,那么这时功能不具体,但是却相似的功能,需要在父类中标示出来,则通过java中关键字:abstact(抽象)。
abstract void 吼叫();//抽象函数,需要abstract修饰,并用分号结束。定义了抽象函数的类也必须用abstract修饰。被abstract修饰的则称为抽象类!

抽象类:

描述事物是,没有足够的信息描述一个事物,功能不确定,则可以使用抽象类。此事务则就是抽象事务。在面向对象的概念中,所有的对象都是通过来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.

2,抽象类的特点:

1.抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在被abstract修饰的类中。

2.抽象类不可以创建实例,原因:调用抽象方法没有意义。

3.只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。

4.之所以继承,更多的是在思想,是面对共性类型操作才会更简单。

代码实例:

//abstract例子:
abstract class Employee
{
	private String name;
	private String id;
	private double pay;
	/**
	构造一个员工对象,一初始化就具备着三个属性。
	*/
	public Employee(String name,String id,double pay)
	{
		this.name = name;
		this.id = id;
		this.pay = pay;
	}
	/**
	工作行为。
	*/
	public abstract void work();
}
//具体的子类:程序员。
class Programmer extends Employee
{
	public Programmer(String name,String id,double pay)
	{
		super(name,id,pay);
	}
	public void work()
	{
		System.out.println("code....");
	}
}
//具体的子类:经理。
class Manager extends Employee
{
	//特有属性。
	private double bonus;
	public Manager(String name,String id,double pay,double bonus)
	{
		super(name,id,pay);
		this.bonus = bonus;
	}
	public void work()
	{
		System.out.println("manage");
	}
}

二,接口:

1,接口的由来:

抽象类中可以定义抽象方法的,当一个抽象类中的方法全是抽象的,这时,可以通过另一种特殊的形式来体现。可以将该类定义为接口。 接口里的方法只能是抽象的。

2,接口中成员的定义格式:

1,定义变量:但是变量必须有固定的修饰符 public static final所以接口中的变量也称之为常量。(可以省略,编译器会自动加上)。

2,定义方法:方法也有固定的修饰符:public abstract 接口里的成员都是公共的。(可以领略,编译器会自动加上)。

3,接口的特点:

1.接口不可以创建对象,

2.子类必须要覆盖掉接口中的所有的抽象方法后,子类才可以实例化。否则子类也会是一个抽象类。

接口的子类:子类与子类的关系是继承,类与接口之间的关系是实现,通过关键字:implements

class DemoImpl implements  demo{
	//重写接口中的所有方法:code....
}

4,接口最重要的体现:

多继承弊端:当多个父类有相同功能时,子类调用会产生不确定性。

解决多继承的弊端,将多继承这种机制在java中通过多实现完成。class C
implements A,B{}//多实现,利于多态化。

原因在于:多继承父类中的功能有主体,而导致调用运行时,不确定哪个主体内容 ,多实现接口中没有方法体,需要有子类来明确。

如果子类想要继续扩展其他类中的功能呢?这是可通过实现接口来完成。

5,接口的好处:

1,接口的出现对功能实现了扩展,2,接口的出现定义了规则,3,接口的出现降低了耦合性(解耦)。说明有两方,一方在使用规则(如笔记本电脑),一方在实现这个规则(笔记本的外围设备)。接口的出现避免了单继承的局限性,父类中定义的事物的基本功能,接口中定义的事物的扩展功能。

2 , 接口可支持多继承,指的是接口与接口之间,支持多继承!,

三,细节:

1,没有抽象方法的抽象类的由来:

为了使用接口中的部分方法,而覆盖了全部的方法,而且每一个子类都要这么做,复用性差。   解决:将这些不用的方法单独抽取到一个独立的类中,让这个类去实现接口,并覆盖接口中的所有方法。但这个类不知道具体的实现内容,所以只能为了后期的子类创建对象方便而进行空实现,而这时,这个类创建就像就没有意义,因为其主体内没有方法内容,这个类创建对象就不需要,则可以直接将其抽象化。这就是没有抽象方法的抽象类的存在意义。

2,接口与抽象类的区别:

接口与抽象类是有很大区别,抽象类可以通过接口定义但接口比抽象类具有更多功能。

1,抽象类是描述事物的基本功能,可以定义非抽象的方法,

接口中定义的只能是抽象方法。

2,类与类之间是继承关系 is a关系。

类与接口之间是实现关系 like a关系。接口只可以定义static final成员变量

3,抽象类里面可以有非抽象方法,但接口里只能有抽象方法

4 ,接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。

时间: 2024-10-12 14:47:13

黑马程序员_抽象类_接口的相关文章

黑马程序员__抽象类与接口的区别

在Java语言中, abstract class 和interface是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力. 理解抽象类 abstract class和interface在Java语言中都是用来进行抽象类定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 在 面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就

黑马程序员_Java基础_接口

------- android培训.java培训.期待与您交流! ---------- 0.接口知识体系 Java接口的知识体系如下图所示,掌握下图中的所有知识就可精通接口. 1.接口概论 1)接口概念 接口是从多个相似类中抽象出来的规范,接口中不包含普通方法,所有方法都是抽象方法,接口不提供实现.接口体现的是规范和实现分离的哲学.规范和实现分离正是接口的好处,让软件系统的各个组件之间面向接口耦合,是一种松耦合的设计.接口定义的是多个类共同的公共行为规范,定义的是一组公用方法. 2)接口与抽象类

黑马程序员_Java抽象类和内部类

- - - - - android培训.java培训.期待与您交流! - - - - - - 类(class) 类是相似对象中共同属性和方法的集合体 在面向对象中定义类,就是在描述事物,就是在定义属性(变量)和行为(方法).属性和行为共同成为类中的成员(成员变量和成员方法). 封装.继承和多态 面向对象方法中软件设计的主体是类,类是相同属性和方法的封装体,因此类具有封装性 子类可以在继承父类所有属性和方法的基础上,再增加自己特有的属性和方法,因此类具有继承性 在一个类层次中,定义为根类的对象可被

黑马程序员-学习日记(接口和多态)

1.继承 1-1 继承的概念 1-1-1 继承的概述 通过 extends 关键字让类与类之间产生继承关系. 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 注意: ①子类可以直接访问父类中的非私有的属性和行为. ②子类无法继承父类中私有的内容.③父类怎么来的?共性不断向上抽取而来的. ExtendDemo.java class Person{ String name; int

黑马程序员__反射_内省_动态代理

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.Class .class文件加载到内存中就是一个Class对象 获取Class对象的方式有3种: Scanner sc = newScanner("xxx.txt"); Class.forName(sc.nextL

黑马程序员_Java基础_我的day20学习笔记

IO流(重点知识) 01. IO流概述及其分类 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便. 2.IO流常用父类 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer 3.I

黑马程序员_JAVA学习- 集合接口

一.Collection集合接口 在之前学习链表的时候可以发现,当使用add()方法向链表增加数据的时候,每次保存的都是一个对象的数据,而Collection操作过程之中每次也只能够保存一个对象.在Collection接口之中一共定义了15个方法,那么常用的方法如下: No. 方法名称 类型 描述 1 public boolean add(E e) 普通 向集合之中保存数据 2 public void clear() 普通 清空集合 3 public boolean contains(Objec

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

黑马程序员_类加载机制

------- android培训.java培训.期待与您交流! ---------- 0.类加载机制知识体系 1.类与JVM进程 使用Java命令运行某个Java程序时,此命令会启动一个Java虚拟机进程,不管Java程序多复杂,开启了多少个线程,这个线程都运行在Java虚拟机进程里.同一个JVM的所有线程.所有变量都处于同一个进程里,都使用该JVM进程的内存区. 只有出现下列情况时,JVM进程才会终止: 1)程序正常结束. 2)程序执行到代码System.exit()或Runtime.get

黑马程序员_集合

集合1.集合和对象数组的区别: 数组的长度不可变,集合的可变: 数组可以存储基本数据类型和对象,集合只能存储对象. 集合的框架图 集合派系的顶层接口Collection1.Collection集合存储对象的方法: add(E e)将元素存储到集合中 addAll(Collection c)将一个集合添加到另外的集合中2.Collection集合提取对象的方法: 通过迭代器iterator中的方法:hasNext()和next()来取出 Iterator it=new iterator(); wh