------- android培训java培训、期待与您交流!
----------

抽象定义:

          抽象就是从多个事物中将共性的,本质的内容抽取出来。

          例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。



抽象类:

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



抽象方法的由来:

          多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。

          例如:狼和狗都有吼叫的方法,可是吼叫内容是不一样的。所以抽象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。

什么时候使用抽象类:

当多个类中出现相同功能,但是功能主体不同,

          这是可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。

 

         抽象大白话来说就是看不懂,抽象类和一般类没有太大的不同。 

         该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。 

         这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。 

         通过抽象方法来表示。 

 

抽象类的特点:

1,抽象方法一定在抽象类中。

2,抽象方法和抽象类都必须被abstract关键字修饰。

3,抽象类不可以用new创建对象。因为调用抽象方法没意义。

4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。 

 

抽象类和一般类的区别:

抽象类比一般类多个了抽象函数。就是在类中可以定义抽象方法。 

       抽象类不可以实例化。

 

       特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

abstract 关键字,和哪些关键字不能共存?           finnal,private,static 

        final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。 

        private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。 

        static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。

 

抽象类中是否有构造函数?

        有,抽象类是一个父类,要给子类提供实例的初始化。

/**
* 抽象类的演示:
*
*/ abstract class Student //只要类中有抽象方法,类就必须声明为抽象
{
abstract void study(); //子类必须覆写该方法
} class BaseStudent extends Student
{
void study()
{
System.out.println("base study");
}
} class AdvStudent extends Student
{
void study()
{
System.out.println("adv study");
}
} public class AbstractDemo
{
public static void main(String[] args)
{
new BaseStudent().study();
new AdvStudent().study();
}
}
/**
* 模板设计模式
* 当定义功能时,一部分内容是确定的,一部分是不确定的,这时就要把不确定的部分暴漏出去。
*
* 例:获取某一程序的运行时间
*
*/ public class TemplateDemo
{
public static void main(String[] args)
{
new SubTime().etTime();
}
} abstract class GetTime
{
//函数功能:获取runCode函数程序运行时间
public final void etTime()//此函数声明出去但是不需要被子类覆写修改,用final修饰
{
long start = System.currentTimeMillis();
runCode();
long end = System.currentTimeMillis(); System.out.println("The code run time is : "+(end-start)+" ms");
} public abstract void runCode();//因为要运行的程序不确定,所以要子类覆写 } class SubTime extends GetTime
{
public void runCode()
{
int sum = 0;
for (int x=1;x<=40000;x++)
{
sum += x;
System.out.println(sum);
}
}
}

接口

初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。

接口定义时,格式特点:

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

2,接口中的成员都有固定修饰符。常量:public static final   方法:public abstract

     记住:接口中的成员都是public的。

class用于定义类。   interface 用于定义接口。

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

   成员常量:public static final

   成员函数:public abstract

接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。
还可以在继承的同时实现多接口 class XXX exdents XXX implements XX , XX  因为没有方法主体,可以由子类随意定义。

接口特点:

接口是对外暴露的规则。

   接口是程序的功能扩展。

   接口可以用来多实现。

   类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

   接口与接口之间可以有继承关系。

接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。

接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。

/**
*
* 接口interface程序演示
*
*/ //定义一个接口
interface Inter
{
//定义常量常用格式public static final,常量名一般全大写
public static final double PI = 3.1415926;
//定义函数常用格式 public abstract
public abstract void show ();
} //定义一个类实现接口
class InterTest implements Inter
{
public void show()
{
System.out.println("PI = "+PI);
}
} public class InterfaceDemo
{
public static void main(String[] args)
{
new InterTest().show();
}
}

------- android培训java培训、期待与您交流!
----------

黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式的更多相关文章

  1. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  2. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  3. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  4. 黑马程序员——JAVA基础之File类,递归,打印流,合并切割流

    ------- android培训.java培训.期待与您交流! ---------- File类 用来将文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作. File对象可以作为参数传递 ...

  5. 黑马程序员——JAVA基础之简述设计模式

    ------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...

  6. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

  7. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  8. 黑马程序员——JAVA基础之语法、命名规则

    ------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...

  9. 黑马程序员——JAVA基础之异常处理机制

    ------- android培训.java培训.期待与您交流! ---------- 异常:就是程序在运行时出现不正常情况. 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式 ...

随机推荐

  1. C/C++文件结构

    总结者:kate (1).h 为头文件:存放 版权和版本声明,预处理块 ,函数和类结构声明 (2).cpp文件:代码文件,存放程序的实现 大都数时候,源文件和头文件是对应出现的,比如有一个A.cpp  ...

  2. 图像显示与加载——opencv(转)

    cvLoadImage() 函数:IplImage* cvLoadImage("图像名称",参数): 函数作用:加载图片: 函数返回值:为IplImage结构体: 参数说明:参数值 ...

  3. [Windows驱动]流媒体驱动开发

    从Windows98开始,Windows流媒体驱动遵循Windows Driver Model(WDM)模型并使用Kernel Streaming(KS)组件.Kernel Streaming(KS) ...

  4. 打饭助手之NABC

    Need: 同学们在早上跑操后要吃早饭,还有中午打饭时人更是多.常常要排很长的队伍,造成时间的浪费,和焦急的等待.因此我们需要错开打饭的高峰期,来避免打饭排队的悲哀. Approach: 通过获取摄像 ...

  5. string(Integer)类的equals和==区别和联系(验证密码的时候用得到)

    “==”在八种原始数据类型中,判断的是两边的值是否相等.对于对象类型来说,判断的是内存地址,所以为true所满足的条件就是两边的引用指向同一个对象. 比如String s1 = "abcde ...

  6. scanf和scanfs的区别

    scanf()函数是标准C中提供的标准输入函数,用以用户输入数据 scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了 ...

  7. JVM值内存垃圾回收监控之jstat

    如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为top主要监控的是总体的系统资源,很难定位到java应用程序. Jstat是JDK自带的一个轻量级小工具.全称“Java ...

  8. Camel routes in Spring config file

    The normal spring bean definition configuration file, the xsi:schemaLocation only has two: beans and ...

  9. DB Create and Insert

    <?php $servername = "localhost"; $username = "username"; $password = "pa ...

  10. GCD时间轴

    __block int timeout=60; //倒计时时间            dispatch_queue_t queue = dispatch_get_global_queue(DISPAT ...