Java基础-抽象类和接口

抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。

抽象定义:

  抽象就是从多个事物中将共性的,本质的内容抽取出来。
       例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。

抽象类:

  Java中可以定义没有方法体的方法,该方法的具体实现由子类完
    成,该方法称为抽象方法,包含抽象方法的类就是抽象类。

抽象方法的由来:

  多个对象都具备相同的功能,但是功能具体内容有所不同,那么在
    抽取过程中,只抽取‘了功能定义,并未抽取功能主体,那么只有功
      能声明,没有功能主体的方法称为抽象方法。
        例如:狼和狗都有吼叫的方法,可是吼叫内容是不一样的。所以抽
           象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。

抽象类的特点:

  抽象类和抽象方法必须用abstract关键字来修饰。

    抽象方法只有方法声明,没有方法体,定义在抽象类中。

      抽象类不可以被实例化,也就是不可以用new创建对象。原因如
        下:

          抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实
          例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。
          而且抽象类即使创建了对象,调用抽象方法也没有意义。

            抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象
            方法后才可以创建对象,否则该子类也是抽象类。

抽象类 总结:

  抽象类和普通类比较,除了多了一个抽象方法之外和不能实例之外没有什么不同。

基本的CODE如下:

package hwc.java.test;
/**
* 抽象类
*/
abstract class MyAbstract {
abstract void test();
abstract String lover();
}

继承类CODE如下:

package hwc.java.test;

public class MyAbstractExtends extends MyAbstract
{

@Override
void test() {
// TODO Auto-generated method stub

}

@Override
String lover() {
// TODO Auto-generated method stub
return null;
}

}

接口

当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用接口 interface来代替。

原因就是 抽象类 只能当个继承而接口能 随意 实现

  接口中的成员修饰符是固定的:所以他只有两种 元素 成员变量 and 成员方法

接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。

  接口的特点 如下:

    接口是对外暴露的规则。
    接口是程序的功能扩展。
    接口可以用来多实现。
    类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
    接口与接口之间可以有多继承关系。
    类可以同时继承抽象类和接口

基本code如下 :

package hwc.java.test;

interface MyInterface{
void test();
String lover();
}

package hwc.java.test;

interface MyInterface2{
void hwc();
String kei();
}

实现类

package hwc.java.test;

public class MyInterfaceImplements implements MyInterface,MyInterface2{

@Override
public void test() {
// TODO Auto-generated method stub

}

@Override
public String lover() {
// TODO Auto-generated method stub
return null;
}

@Override
public void hwc() {
// TODO Auto-generated method stub

}

@Override
public String kei() {
// TODO Auto-generated method stub
return null;
}

}

开发遵守一个原则 能用接口 打死不用抽象类。

时间: 2024-10-14 21:43:46

Java基础-抽象类和接口的相关文章

详解java基础--抽象类、接口与多态

抽象类.接口.多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助. 一.抽象类 1.形式 1 abstract class Ceshi 2 { 3 abstract void show(); 4 } 5 class DemoA extends Ceshi 6 { 7 void show() 8 { 9 System.out.print("Hello world"); 10 } 11 } 2.特点

Java基础——抽象类和接口的关系

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都能用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就应该被定义为抽象类. 抽象类 概述 比如,我们要描述"动物",它具有年龄.体积,会叫,能跑.但是又缺乏足够的特性(相较于阿猫,阿狗,它们都是动物,却有自己的特性),我们没有唯一的一种能够代表动物的东西(当然,这是相对于猫.狗来说的,在生物学上,动物还是有办法来定义的),这时我们可以用抽象类来描述它.当我们用某个类来具体描述&quo

黑马程序员----java基础---抽象类和接口,附相关面试题

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一:抽象类(掌握) (1)把多个共性的东西提取到一个类中,这是继承的做法. 但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体. 也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样. 所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体. 而一个没有具体的方法体的方法是抽象的方法. 在一个类中如果有抽象方法,该类必须定义为抽象类. (2)抽象类的特点 A:

java基础-抽象类与接口(转)

抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类       我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal(),我们都知道这个是产生一个动物Animal对象,但

黑马程序员-java基础-抽象类和接口

1,抽象类中可以有构造方法,主要是当实例化子类时,进行初始化. 2,抽象类中可以没有任何抽象方法 意义在于不让外界创建对象. 3,抽象类和关键字的共存问题 private abstratc method();  // 要重写,但又不支持重写 final abstract method();   //final 是让子类不重写 static abstract method(); // 方法属于类,必须实现 1,抽象类可以实现接口 其中的方法可以实现,也可以不实现. 2.成员特点 成员变量(接口中很

Java基础--抽象类与接口

抽象类: /** * 抽象类,对类的抽象描述,包括属性.方法的抽象描述 * @author 尘世间迷茫的小书童 * */ public abstract class Myabstract { /** * 抽象类属性想要被子类继承,修饰符不能为private */ public String name; public String sex; public int age; /** * 抽象类中的方法可以有选择的实现 */ public void testDo() { } public void t

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

java基础学习总结——接口

java基础学习总结——接口 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承.这样金丝猴可以同时从 “动物类”.“值钱的东西类”.“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类.因此为了封装现实生活

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c