------- 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. mybatis分页插件PageHelper的使用(转)

    Mybatis 的分页插件PageHelper-4.1.1的使用 Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_P ...

  2. bjui简单了解

    bjui官网:http://demo.b-jui.com/ 其他的我就不是很了解,恶心.

  3. GPIO的8种工作模式

    1.浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 2.带上拉输入GPIO_IPU——IO内部上拉电阻输入 3.带下拉输入GPIO_IPD——IO内部下拉电阻输入 4 ...

  4. 毕向东day01笔记--dos-jdk-jre-环境变量等

    1.常用的dos命令,md,rd,dir,c:(进入C盘),del,set classpath 2.JDK和JRE之间的区别: JDK包含JER,JRE包含JVM. 3.环境变量的配置,静态配置--b ...

  5. (转)mysql账号权限密码设置方法

    原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...

  6. hive 中 union all

    hive 中的union all是不能在sql语句的第一层使用的,否则会报 Top level UNION is not supported currently 错误: 例如如下的方式: select ...

  7. PHP_Const

    PHP_Const 常量 规则: 1 总是大写 2 A-Z 及 从127-255的ASCII字符 3 全局范围 4 用define函数定义 5 只能包含标量数据 如Boolean integer fl ...

  8. iOS 静态库和动态库的区别&静态库的生成

    linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函 ...

  9. 禁止VMware用户在系统里删除网卡的操作的方法

    点击选项-常规-配置参数,如下图所示:   8)点击“添加行”,在新的栏目中,左栏输入:devices.hotplug,右边栏输入:false

  10. 用云存储和CDN轻松搞定网站图片

    http://www.kuqin.com/web/20120207/317912.html