------- 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. 升级或安装 GNOME Shell

    1.安装经典Gnome桌面系统 install gnome-session-fallbackinstall gnome-appletsinstall indicator-applet indicato ...

  2. SharePoint 2013 开发——Provider-hosted APP准备工作

    博客地址:http://blog.csdn.net/FoxDave 后续的内容我们来一步一步开发一个SharePoint Porvider-hosted APP,本篇主要介绍一些准备工作. Sha ...

  3. Android-Java第一课 内部类 (inner Class)

    总所周知,Android系统基于Linux,内核和驱动都是使用C/C++语言做开发,但应用层一般使用 JAVA 语言开发.今天我们就来学习一下java的内部类. 内部类: 是一个编译时的概念,一旦编译 ...

  4. Java中方法与数组

    1:方法(掌握) (1)方法:就是完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法. (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参 ...

  5. 《JAVA学习笔记(14-1---14-7)》

    [14-1]面向对象-继承-概述 /* //描述学生 class Student { //属性 String name; int age; //行为 void study() { System.out ...

  6. Be a person

    做人不能太实诚 尤其是干我们这行的 多久时间能做完 你自己心里要有个估算 然后把时间再往后延 别他妈给自己找罪受

  7. malloc,vmalloc与kmalloc,kfree与vfree的区别和联系

    kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续kmalloc能分配的大小有 ...

  8. ios--NSCalendar NSDateComponents

    原文: ios时间那点事--NSCalendar NSDateComponents http://my.oschina.net/yongbin45/blog/156181 目录[-] iOS时间那点事 ...

  9. ubuntu命令chmod755

    使用方式 : 在终端切换到文件目录 输入 chmod775 hello.py 这样就将hello.py变成了可执行文件 当然作为 python文件 还需要再开头加上 #!/usr/bin/env py ...

  10. iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接

    如果你的应用程序需要在设备休眠的时候还能够收到服务器端发送的消息,那我们就可以借助VOIP的模式来实现这一需求.但是如果的应用程序并不是正真的VOIP应用,那当你把你的应用提交到AppStore的时候 ...