黑马程序员——Java基础——抽象类、接口

原创 2015年07月07日 09:01:16

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一、抽象类

1.定义

Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:猫和狗,它们之间是不同的,但是它们又都属于动物这样一个概念,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

2.特点

1)抽象方法一定在抽象类中,只对方法进行声明,没有方法主体。
2)抽象方法和抽象类都必须被abstract关键字修饰。
3)抽象类不可以用new创建对象。因为调用抽象方法没意义。
4)抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。
   如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

//定义一个抽象动物的父类
abstract class Animal
{
	//抽象方法
	public abstract void eat();
}
//定义子类猫,继承动物类,复写抽象方法
class Cat extends Animal
{
	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("猫吃老鼠");
	}	
}
//定义子类狗,继承动物类,复写抽象方法
class Dog extends Animal
{
	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("狗吃骨头");
	}	
}


3.与一般类的区别

抽象类与普通类的区别就是不能创建实例对象和允许有abstract方法,其他都一样。

意味着抽象类可以继承类,也可以实现接口,内部也有构造函数,可以有静态的main方法,只要理解了抽象类和一般类的区别,对一些常见问题就很容易回答

4.注意事项

抽象关键字abstract和哪些关键字不可以共存

final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
         而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
        可是抽象方法运行没意义。

二、接口

1.定义

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。可以被认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。接口使用interface来表示,子类中用implements实现。可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。

2.格式特点

接口中常见定义:常量,抽象方法。

接口中的成员都有固定修饰符。接口中的成员都是public的。

常量:public static final

方法:public abstract

3.特点

1)接口是对外暴露的规则。
2)接口是功能的扩展。
3)接口的出现降低了耦合性

//定义一个抽象动物的父类
abstract class Animal
{
 //抽象方法
 public abstract void eat();
}
//定义一个爬树的功能
interface ClimbTree
{
 public void climbtree();
}
//定义子类狗,继承动物类,复写抽象方法
class Dog extends Animal
{
 @Override
 public void eat() {
  // TODO Auto-generated method stub
  System.out.println("狗吃骨头");
 } 
}
//定义子类猫,继承动物类,实现爬树接口,复写方法,具备爬树的功能
class Cat extends Animal implements ClimbTree
{
 @Override
 public void eat() {
  // TODO Auto-generated method stub
  System.out.println("猫吃老鼠");
 }
 @Override
 public void climbtree() {
  // TODO Auto-generated method stub
  System.out.println("上树");
 } 
}


三、抽象类和接口的区别

相同点:

1.都是不断向上抽取的概念

2.通常都在顶层。

3.可以在内部定义抽象方法

4.都不可以实例化,需要子类来实现。

不同点:

1.抽象类体现继承关系,一个类只能单继承。

  接口体现实现关系,一个类可以多实现。同时接口与接口之间有继承关系。

2.抽象类可以有构造方法,接口中不能有构造方法

3.抽象类中可以有普通成员变量,接口中没有普通成员变量

4.抽象类中可以包含非抽象的普通方法,

  接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

5.抽象类中的抽象方法的访问类型可以是publicprotected

  接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

6.抽象类中可以包含静态方法,接口中不能包含静态方法

7.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意

  接口中定义的变量只能是public static final类型,并且默认即为public static final类型。













黑马程序员——JAVA基础----多态、抽象类和接口

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 多态、抽象类和接口 01多态的概述及其代码体现 A:多态(po...
  • Du_jing
  • Du_jing
  • 2015年11月04日 23:48
  • 246

黑马程序员_Java基础篇(三)——抽象类和接口的对比

黑马程序员_Java基础篇(三)——抽象类和接口的对比 一)概述: 1、抽象类(abstract class):一般仅用于被子类继承。 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,...

黑马程序员——Java基础--接口和抽象类的区别

抽象类定义:声明方法的存在而不去实现它的类叫做抽象类(抽象类对某具体类型的部分实现------抽象类是对具体的抽象。) 接口定义:接口是抽象类的变体(接口就是一些方法特征的集合------接口是对抽...
  • semial
  • semial
  • 2014年10月04日 16:47
  • 439

黑马程序员———java基础——抽象类、接口

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 一、抽象类 1、什么是抽象类    从以下几点...

黑马程序员——基础学习(五)继承、多态、抽象类和接口

继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 多个类可以称为子类,单独这个类称为父类或者超类。 子类可以直接访问父类中的非...

黑马程序员——解析Java中抽象类和接口的区别

------- android培训、java培训、期待与您交流! ---------- 在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制。正是由于这...

黑马程序员——Java面向对象之抽象类 接口 内部类笔记

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 三, 抽象类概述: 在Java中,一个没有方法体的方法应该定义为抽象方法, 而类中如果...

黑马程序员Java笔记——抽象类、接口、内部类(拾遗补录)

----------- android培训、java培训、java学习型技术博客、期待与您交流! --------- 拾遗补录: 面向对象与面向过程: (1)面向对象与面向过程的区别,以及有哪些编程...

黑马程序员——Java面向对象(三)—抽象类、接口

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

黑马程序员——学习日记8 java抽象类与接口

------- java培训、Android培训 期待与您交流! ---------- 抽象类: abstract 抽象:不具体,看不明白。抽象类表象体现。 在不断抽取过程中,将共性内容中的方法...
  • T2ANDY
  • T2ANDY
  • 2014年04月26日 22:09
  • 267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——Java基础——抽象类、接口
举报原因:
原因补充:

(最多只允许输入30个字)