【php】php初级知识点总结

第一单元【php入门】


    a、什么是php
    b、php的优势是什么
    c、php能做什么
    d、php的历史
    f、php的简单语法规则(大小写、注释、空白和换行、分号使用)
    g、程序架构 b/s、c/s
    h、开发环境搭建

 

    1.php简单概述


    2.b/s与c/s简单比较,区别:


    --a、运行环境不同(广域网、局域网)
    --b、安全级别不同(低/高)
    --c、用户群不同(全部用户/局部用户)
    --d、系统升级不同(无缝升级/整体升级)
    --e、用户开启不同(浏览器/客户端软件)
    --f、侧重点不同(信息流/用户体验)
      比如:b/s就是网上的微博、博客;c/s就是在网吧打的网络游戏(奇迹、传奇等)


    3.php是什么:运行在服务器端的脚本语言


    --Hypertext Preprocessor
    --personal home page


    4.php语言能做什么


    --图形化用户界面程序(开心网、赶集网、sina等等 phpcms、dedecms、帝国cms、drupalcms)
    --服务器端运行脚本程序


    5.简单特点:


    --a、大小写(自己定义的类名和函数名是不区分的)
    --b、分号
    --c、程序的注释
    --d、空白和换行


    6.wamp集成环境安装


    7.php的开发框架有:yii、cakephp、CodeIgniter、zendframework等


      php的cms有:phpcms、dedecms、帝国、drupal、joomla等


    ******************************************************************************
    ******************************************************************************
第二单元【php语法基础】


    1.变量的定义


    --美元符号"$"加上变量名称,例如$str。
    --变量名称命名规则:是由字母和下划线开始,后接任意数量的字母、数字、下划线


    2.可变变量


    例如:
        $a = "hello";
        则$$a 和 $hello 同理


    3.数据类型:


      四个标量类型(int,string,float,boolean)
      两个复合类型(array,object)
      两个资源类型(resource,NULL)


    4.什么是常量


      常量的值是固定的,不能随便变化的,例如圆周率、系统里边的用户名、密码等等。


    5.常量名的命名规则


      没有美元符号"$",名字的命名规则和变量名一样,按照习惯都是大写的


    6.常量的定义


      define('CIRCLE',3.14159);
      defined('CIRCLE');//判断是否有定义常量CIRCLE


    7.常量的使用,直接引用


      例如可以这样使用上边的变量echo CIRCLE;
      还可以使用php系统里边自带的常量例如
      echo __FILE__;
      echo __LINE__;


    8.变量和常量的区别


      a.常量前面没有美元符号($);
      b.常量只能用 define( ) 函数定义,而不能通过赋值语句;
      c.常量可以不用理会变量范围的规则而在任何地方定义和访问;
      d.常量一旦定义就不能被重新定义或者取消定义;
      e.常量的值只能是标量类型。


    9.php外部变量$_POST[]、$_GET[];

 

    10.自定义函数


    11.变量的能见度


    12.函数参数传递(两种)


    13.代码重用(include,require,include_once,require_once)


    14.递归调用


    15.运算符(算术、递增/递减、比较、逻辑、位、其他)


      特殊运算符
      '.'  是连接符
      ".=" 是连接赋值
      "@"  屏蔽错误信息 
$link=@mySQl_connect(主机,用户名,密码)
      "?:" 三目运算符


    16.流程控制(顺序、选择、循环)


    作业,自己写一个函数,输入年份判断出当前输入参数是否是闰年
        (能被4整除并且不能被100整除,或者能被400整除)
    ******************************************************************************
    ******************************************************************************


第三单元【数组】


    定义:具有相同类型和名称的变量的集合。


    1.数组按照键名分索引和关联


    2.数组赋值方式(一维、二维)


    3.遍历数组方式:


        遍历定义:沿着一定的路线,依次对数组里边的每个元素做一次且仅做一次访问。
        foreach(数组 as 键名 => 值名)
        foreach(数组 as 值名)
        while(list(键名,值名)=each(数组)){}
        while(list(,值名)=each(数组)){}
        自学通过for方法遍历数组
        $_arr[] = "a";
        $_arr[] = "b";
        $_arr[] = "c";
        $_arr[] = "d";
        for($i=0; $i<count($_arr); $i++){
            echo $_arr[$i];
        }

        $arr[] = "grape";
        $arr[][] = "banana";
        $arr[][][] = "pear";
        $arr[][][][] = "milk";
        $arr[][][][][] = "apple";
        $arr[][][][][][] = "orange";
        利用第二种方法(array)重新定义以上数组


    4.数组和栈的操作(子弹夹)


      array_push(目标数组,字符串)将字符串压入数组的最后
      array_pop(目标数组)将数组最后的元素弹出并返回


    5.数组和队列的操作


      array_unshift(目标数组,字符串)将字符串放到数组的开始位置
      array_shift(目标数组)删除数组的第一个元素并返回


    6.数组和指针的操作key() current() next() prev() reset() end()

 

    7.数组常用函数count()、array_sum()、in_array()、extract()、


      array_unique()、sort()、rsort()、array_flip() print_r()
      is_array()
      isset()检查变量是否被定义
      empty()检查变量是否为空
      unset()删除变量


    8.了解函数 array_change_key_case(目标数组,型态常数)


      会将目标数组索引值中所有字符串索引的英文字母转换为大写或小写CASE_UPPER/CASE_LOWER
      array_chunk()分隔数组 以指定的个数分割
      array_count_values()计算目标数组中各值出现次数
      array_filter()利用指定的函数挑选数组元素
      数组的合并 array_merge() Array_merge_recursive()
      差集Array_diff() Array_diff_assoc()
      交集array_intersect() Array_intersect_assoc()


    9.预定义数组($_GET $_POST $_FILES $_COOKIE $_SESSION)
   
    作业:


    1.写一个函数这个函数邮一个输入参数,要求传入一个正整数m,
    经过处理返回一个索引数组,数组索引从0开始递增,
    数组的值从1开始一直到m,例如输入数字4则返回的数组格式为:
    Array {
            [0]=>0
            [1]=>1
            [2]=>2
            [3]=>3
    }


    2.在上一题的基础上写一个函数,要求输入两个正整数m,n,
    经过处理返回一个索引数组,要求数组索引从n开始递增,
    数组值从1开始一直递增到m,例如输入参数4,100则返回:


    Array{
               [100]=>0
               [101]=>1
               [102]=>2
               [103]=>3
    }

    ******************************************************************************
    ******************************************************************************


第四单元【字符串】


    字符串:由0个或多个字符组成的有限序列。


    1.字符串的三种定义方式(单引号、双引号、定界符)


    ---单引号定义(转义\'和\\)
    ---双引号定义(转义\n \r \t \$ \\ \")
    ---定界符方法<<<eof

    2.函数部分


    explode/implode
    substr()**
    str_replace/trim/ltrim/rtrim

    strchr(str, search)获得指定字符串最开始出现到字符串最后的内容
    strrchr(str, search)获得指定字符串最后出现到字符串最后的内容
    strpos(str,  search)获得指定字符串最开始出现的位置
    strrpos(str, search)获得指定字符串最后出现的位置
    ucfirst(str)将字符串第一个字母大写
    ucwords(str)将字符串的每个单词的第一个字母大写
    strlen(str)获得字符串长度
    strcmp(str1, str2)比较两个字符串大小,
              返回负数表示 str1 小于 str2;
              返回正数表示 str1 大于 str2;
              返回零表示二字符串相同
    strtr()字符串翻译
    --strtr(str, mode, replace)
    --strtr(str,array)
    strtolower 将字符串转化为小写
    strtoupper 将字符串转化为大写

    parse_url(str)解析完整的url转变为为数组
    parse_str(str,out)解析请求字符串转变为数组
    htmlspecialchars()转换html代码为实体代码
    printf/sprintf %b %d %c %x %s %f %X
    printf(格式化内容,具体信息);
        printf("%d%b%c",10,20,10)
    – b   整数转成二进位。
    – c   整数转成对应的 ASCII 字符。
    – d   整数转成十进位。 **
    – f   单倍精确度数字转成浮点数。 **
    – o   整数转成八进位。
    – s   转成字符串。 **
    – x   整数转成小写十六进位。
    – X   整数转成大写十六进位。

    ******************************************************************************
    ******************************************************************************


第五单元【表单处理】


    表单在网页的作用不可小视,主要负责数据采集工作,比如可以采集用户名、密码、email邮箱等信息。
    表单可以分为3部分:
        表单标签:<form action="地址" method="post/get">
        表单域:文本框、密码框、下拉列表、单选框、复选框、文本域、隐藏域、附件
        表单按钮:submit reset
    $_GET $_POST


    1.为什么要用表单,表单可以实现两个或多个页面之间传递数据。


    2.制作一个表单(文本框、密码框、单选按钮、多选按钮、下拉菜单、文本域、隐藏域)


    3.制作一个接收页面,用于接收表单数据


    4.分别利用post和get两种方式进行表单数据传递


    5.利用超链接方式进行get方式传送数据


    作业:
    进行表单验证
    ******************************************************************************
    ******************************************************************************


第六单元【其他常用函数】

 

    date(format[,timestamp])//格式化时间信息,并返回
    date_default_timezone_set("asia/shanghai");//设置时区
    time()//返回当前时间戳信息

    mktime(hour,minute,second,month,day,year)
    mktime(小时,分钟,秒,月,日,年)//取得一个日期的 Unix 时间戳

    header()发送http头信息
        //当前页面输出内容是html,编码为utf-8格式
        header("content-type:text/html; charset=utf-8");
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        //当前页面输出内容的格式是图片
        header("content-type:image/png gif jpeg");

        //页面5秒后要跳转到新网址
        header("refresh:5;url=http://www.phpone.com/five/string.php");

        //页面重定向
        //window.location.href="
http://www.phpone.com/five/form.html";
        header("location:http://www.phpone.com/five/string.php");

    abs(-4.6)//取得绝对值信息
    ceil(4.0)//向上取整
    urlencode(str)替换所有非字母数字(-_.)的字符,变为%后面跟两位16进制数,空格变为+号(字母、数字、-、_、.不给替换)
    urldecode(str)对已%##编码的URL进行解析还原

    max()//取得最大值
    -echo max(1, 3, 5, 6, 7);  // 7
    -echo max(array(2, 4, 5)); // 5
    -echo max(0, '1hello');     // 1hello
    -echo max('hello', 0);     // hello
    -echo max(-1, 'hello');    // hello
    -print_r(max(array(2, 4, 8), array(2, 5, 7))); // array(2, 5, 7)
    -print_r(max('string', array(2, 5, 7), 42));   // array(2, 5, 7)数组和非数组比较数组总认为最大
    min()//取得最小值

    mt_rand(65,94)//获得随机数
    round()//四舍五入取整
    flush()//输出准备区内容output_buffering=Off(php.ini)

    chr(mt_rand(65,90))随机获得字母
    ord(chr(mt_rand(65,90)))将字母转化为对应的ascII码数字
    basename(路径名)获得路径中文件名部分 d:/web/phpone/five/form.html

    ******************************************************************************
    ******************************************************************************


第七单元【php连接mysql】


    *mysql_connect(主机,用户名,密码) 打开一个到 MySQL 服务器的连接
    *mysql_select_db(数据库,连接数据库资源) 选择 MySQL 数据库
    *mysql_query("set names utf8");设定字符集         
    *mysql_close() 关闭 MySQL 链接
    *mysql_query(语句) 发送并执行一条sql语句
    *mysql_fetch_array(结果资源)从结果集中取得一行结果(索引/关联数组)
    *mysql_fetch_assoc(结果资源)从结果集中取得一行结果(关联数组)
    mysql_fetch_row(结果资源)从结果集中取得一行结果(索引数组)
    mysql_fetch_object(结果资源)从结果集中取得一行结果(对象)

    mysql_errno()返回错误号码
    *mysql_error()返回错误信息
    *mysql_affected_rows()获得受影响的结果数目【增、删、改、查】
    *mysql_num_rows(结果资源)用于计算查询结果中所得行的数目【查】

    *mysql_insert_id()传回最近一次使用 INSERT 指令产生的自动增长 ID 值

    mysql_result(结果集,索引行,字段)指定获取结果
    mysql_free_result(结果资源)释放结果集
    mysql_num_fields(结果资源)用于计算查询结果中所得列的数目
    mysql_fetch_field(结果资源)从结果集中取得一列的结果,以对象形式返回

    mysql_pconnect(主机,用户名,密码)永久连接数据库 mysql_connect();


    学习步骤:


    1.建立一个数据库 班级号


    2.数据库里边建立一个数据表 sw_user


        u_id          int             主键、自增
        u_name        varchar(24)     姓名
        u_psd         varchar(128)    地址
        u_sex         varchar(2)      性别
        u_hobby       varchar(32)     爱好
        u_xueli       varchar(8)      学历
        u_introduce   text            简介
        u_itime       datetime        注册时间


CREATE TABLE `sw_user` (
  `u_id` int(11) NOT NULL auto_increment COMMENT '自增id',
  `u_name` varchar(32) NOT NULL COMMENT '会员名',
  `u_psd` varchar(64) NOT NULL COMMENT '会员密码',
  `u_sex` varchar(4)  NOT NULL COMMENT '性别',
  `u_hobby` varchar(32)  NOT NULL COMMENT '爱好',
  `u_xueli` varchar(8)  NOT NULL COMMENT '学历',
  `u_introduce` varchar(128)  NOT NULL COMMENT '简介',
  `u_itime` datetime  NOT NULL COMMENT '注册时间',
  PRIMARY KEY  (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员表' AUTO_INCREMENT=1;


insert into sw_user values (null,'张三','123','男','篮球,足球','初中','我是张三',now());
insert into sw_user values (null,'李四','456','女','旅游,看书','高中','我是李四',now());
insert into sw_user values (null,'王五','789','男','爬山,上网','大学','我是王五',now());


    3.实现通过html表单写入数据到数据库


      u_id  u_name  u_psd  u_sex u_hobby   u_xueli   u_introduce
      1     张三     123    男     篮球,足球    初中       我是张三
      2     李四     456    女     旅游,看书    高中       我是李四
      3     王五     789    男     爬山,上网    大学       我是王五
    4.(自选)将写入的数据展现到页面
    ******************************************************************************
    ******************************************************************************
第八单元【留言板】


    学习留言板目的:
        a、复习表单知识
        b、复习数据库知识
        c、可以对php编程有一个简单认识
    本章重点:
        a、表单使用<form>
        b、数据库操作
        c、post和get方式传值,$_POST $_GET
        d、隐藏域传值
        e、外键使用
    本章难点:
        a、外键使用
        b、post和get方式传值
    知识点:
        a、form
        b、$_POST $_GET使用
        c、hidden
        d、html标签使用
        f、javascript语言应用
        g、表单验证


    具体实现步骤:


        1.在数据库建立两张表 sw_leave_word 和 sw_back_word (留言表和回复表)


          sw_leave_word:
          字段       数据类型
          leave_id        int         主键、自增
          leave_title     varchar(20) 标题
          leave_content   text        内容
          leave_time     datetime    添加时间
         
          sw_back_word:
          back_id        int         主键、自增
          back_leave_id  int         外键(留言id)
          back_content   text        内容
          back_time     datetime    回复时间

 

CREATE TABLE `sw_leave_word` (
  `leave_id` int(11) NOT NULL auto_increment COMMENT '自增id',
  `leave_title` varchar(64) NOT NULL COMMENT '留言标题',
  `leave_content` text NOT NULL COMMENT '留言内容',
  `leave_time` datetime  NOT NULL COMMENT '留言时间',
  PRIMARY KEY  (`leave_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='留言表' AUTO_INCREMENT=1;

 

CREATE TABLE `sw_back_word` (
  `back_id` int(11) NOT NULL auto_increment COMMENT '自增id',
  `back_leave_id` int(11) NOT NULL COMMENT '留言id:外键',
  `back_content` text NOT NULL COMMENT '回复内容',
  `back_time` datetime  NOT NULL COMMENT '回复时间',
  PRIMARY KEY  (`back_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='回复表' AUTO_INCREMENT=1;

 

        2.制作添加留言表单,实现留言的添加


        3.留言明细页面,逐条显示留言信息


        4.修改留言,对需要修改(get方式传递被修改留言id值,再利用隐藏域方式传递给接收页面)的项目进行修改


        5.留言详细显示功能,有的留言内容比较多,在明细页面不可能全部显示出来,这是需要留言详细显示功能。
          (利用get方式传递留言id)


        6.在详细页面可以实现回复功能和回复留言展示,步骤:制作一个回复表单和接收数据页面


        7.(自己实现)删除留言,对无效、无用的留言实现删除功能(这时需要用get方式传递被删除留言id值)


    ******************************************************************************
    ******************************************************************************


第九章 面向对象


    为什么要用面向对象编程:


    1.是一门流行语言


    2.程序思想


    3.框架的使用


    4.模块化---易于维护


    5.框架要使用面向对象


    OOP (Object-Oriented Programming)
    OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。
   
    什么是类:


        类是具有相同属性和服务(功能、行为)的一组对象的集合


    什么是对象


        对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。


        一个对象由一个类名并包括属性说明和服务说明两部分。


    A   

         1.理解面向对象思想


         2.理解类和对象(实例化对象)


         3.类的成员属性和方法


         4.对象访问成员属性和方法


           类:车、灯、鱼、人、学生


           对象:


            车(车甲、乙、丙、丁等)车撞树
            灯(灯甲、乙、丙、丁等)灯坏了
            鱼(鱼甲、乙、丙、丁等)鱼吐泡
            人(张三、李四、王五、赵六、田七等)人打架
            学生(学生甲、乙、丙、丁)学生迟到

 

    B   

         1.实例化对象在内存中如何分配


         2.对象中成员属性和方法的访问、"$this"关键字使用


         3.构造方法和析构方法


           构造函数:实例化对象首先第一个需要做的事情就是构造函数。一个小孩出生到5岁之前,所有的事情都是父母帮助做的,包括起名字、穿衣服、吃饭等等。
           析构函数:一个对象被使用完后需要做一些善后工作,这些善后工作是不需要人为干预的,例如资源释放、变量删除等。例如:一个小狗死后,主人非常爱惜它,就把它埋在了家后园的一颗树下。小狗被埋这件事情是主人做的,不是狗做的。这就是析构函数。

    C   

          类的三大特性:封装、继承、多态


         1.类的继承:


           子类和父类之间的事情
           B类的对象拥有A类的全部属性与行为,称作B对A类的继承
            车(汽车、卡车、小轿车、客车等)
            灯(台灯、灯管、路灯、灯塔等)
            鱼(金鱼、鳄鱼、鲨鱼、鲸鱼、鲤鱼、刀鱼等)
            人(黑人、白人、黄种人、中国人、美国人、男人、女人等)

 

         2.类的封装


         3.类的重写


           子类和父类之间的事情,就是说父类有的方法,子类不但可以直接使用,还可以在子类中
           重新定义具体内容,例如有一个父亲会驾驶汽车,那么他的儿子也会驾驶汽车,但他的儿子
           可以不驾驶汽车,而驾驶飞机,这就是类方法的重写。

         4.类中的修饰符:public、protected、private


           public:类成员访问没有限制,内部外部成员都可以访问
           protected:受保护的,不能被类外部成员访问,该类的子类可以访问,可以实现对成员属性的读、写操作
           private:私有的,只能类里边的成员自己访问,类外部的成员都不能访问


         5.了解内容__get()、__set() 、__unset()


           一个属性被修饰为私有的(private),那么这个属性在类的外部是不可以读取和修改的,现在有一种方法
           可以设置该属性既是私有的,还可以被类的外部成员读取即__get()和__set()

            function __get($key_name){
                return $this -> $key_name;//$key_name泛指调用的私有属性名
            }
            function __set($key_name, $key_value){
                $this -> $key_name = $key_value;
            }

    D   

          1.final(最后的)关键字使用


           该关键字修饰的类不能被继承
           该关键字修饰的方法不能被重写


         2.static(静态)关键字使用(类的内部、外部、子类)


           实例化对象在内存中的分配有讲到大的数据在内存被分配到堆空间里边。现在有一个例子:有一个
           "学生"这个类,里边有一个成员属性是"国家",标识该对象是属于哪个国家的,比如美国、英国、德国等
           ,这个类在实例化对象时候,每个对象在内存中都会分配一个空间用于存放国家这个成员属性,如果
           有100个对象,那么在内容中会分配100个相应的空间。如果这个类的使用对象是在"中国"境内,那么
           每个对象的国家属性就会是一样的,即"中国",相应的在内存中会有100个空间存放100个相同的内容
           这会造成空间浪费,其实到这里我们可以知道100个相同的内容用一个空间存放就可以,反正都是一样的,
           这就产生了静态化概念"static"。
           用static修饰的成员属性,该属性就不是对象的,而是类的。


         3.self和parent关键字使用


            $this、self、parent三者的区别
            $this :泛指调用该方法的当前对象,在类的内部调用自己的属性和方法时可以使用$this
            self:代表当前类,可以在类的内部调用自己的静态成员和类常量
            parent:代表父类,在子类可以使用parent调用父类的静态成员和父类常量

           在类的内部访问类中的成员(属性和方法),可以用"$this",该关键字泛指对象,这是访问一般的类
           成员,如果访问的成员是用static关键字修饰的,就不能用"$this"了,因为用static修饰的类
           成员是被类本身拥有,不属于任何对象了,这时候需要用"self"关键字修饰 self::成员
           在类的外部访问类本身拥有的成员可以这样  类名::成员属性。
           在子类中访问父类拥有的成员可以用parent关键字  parent::成员属性


         4.const(常量)关键字使用


           在php中可以定义常量,类外部用define定义,类内部用const定义。
           常量的拥有者是类本身,类内部访问常量用 self::常量
                          类外部访问常量用 类名::常量
                  子类访问常量    parent::常量


         5.类成员的访问self、类名、parent


         6.魔术方法clone、__call、__autoload使用


           clone:在一个项目里边我们有时候需要两个或多个完全一样的初始化对象,这时候可以使用clone技术
                 不用clone技术也可以,不过每个新的对象都需要初始化属性值,这样比较繁琐,也容易出错,
             使用clone就比较简单,克隆出来的多个对象彼此是独立的,互不相干。
                 $p2 = clone $p1;
           __call:在类的使用过程中,如果一个对象调用的方法不在类里边,那么这时候程序要报错,然后程序退
                  出不能继续运行。这样做用户体验非常不好,如果有一种方法可以使得程序报错完后可以继续运
              行,这样的程序给人更智能、用户体验更好的感觉,这时候就可以用__call
              public function __call($method_name,$args){
                echo "你访问的方法:";
                echo $method_name;
                echo "参数:";
                print_r($args);
                echo "不存在";
              }
           __autoload:开发一个软件系统,往往里边会有很多类,在初始化类对象之前需要先include这个对
                      象对应的类文件。所有的类不能都放到一个文件(文件臃肿,不易维护),这样就会在程
              序开始处有很多的include列表,这样做非常繁琐,出现一个新的类就需要被include,
              有没有一种方法可以使得被include的类文件在实例化对象时候才引入,否则不动作,
              答案是有的,这时候可以用魔术方法__autoload
              function __autoload($className){
                include($className.'.php');
              }


         7.了解内容__toString()、serialize()、unserialize()方法


         8.子类重写父类成员方法修饰符限制,子类的修饰级别大于父类。例如父类的修饰符是protected,
           则子类修饰级别是protected或public。父类是public的,子类也必须是public的


         9.php里边只能单继承,一个父类可以有多个子类,一个子类不可以有多个父类

 

    E   

          1.抽象类


           在类里边定义的没有方法体的方法就是抽象方法,有抽象方法的类被称为抽象类。抽象类不能实例化对象。
           所谓没有方法体就是方法在声明时候没有花括号和里边的内容。


           作用之处:


               例如:我有一个类"动物",里边有方法"吃食"(还可以有许多其他的方法)
           动物这个类可以有许多子类例如:狗、鱼、鸟等,这些子类有一个共性就是都有吃食这个方法
           一般的解决方法是:定义3个类,里边都有吃食方法。这样实现没有问题的,但是如果其中一个
           类没有吃食方法,这时候程序是不给报错的。我们现在要做的就是3个类中任何一个没有吃食方法
           系统就要报错。这时候就需要用到抽象类了。
           抽象类按照字面意思理解就是对3个类的进一步抽象。抽象出来吃食方法。
           抽象类技术特性:
           a、抽象类不能实例化
           b、类的成员方法是抽象的,则这个类也是抽象的
           c、抽象方法体内没有实现细节,具体实现留给子类实现
           d、继承抽象类的子类必须实现父类的抽象方法,除非自己也是抽象类。
          
         2.接口


           打个比方,每个用电器都有插头,我们不可能用电器时都直接把零线火线直接绑到插头上,所以我们按一定
           规格制定了插座,并要求用电器的插头都要符合这个规格,以方便使用。这个插座就是接口。

           当一个抽象类里边的全部方法都是抽象方法时候,这个抽象类就是"接口"。
           接口技术特性:
           a、interface声明
           b、全部接口方法是public的,因此可以省略
           c、接口只定义方法,没有具体方法实现
           d、实现类用implements实现接口,全部接口方法都要实现
           e、接口可以多实现,中间用逗号分开
           f、接口是对抽象类的抽象,抽象类是对类的抽象,类是对事物的抽象。


           g、接口不能实例化


           (1)、抽象类和接口有什么不同
            抽象类只能单继承,接口可以多实现
            抽象类里面可以有抽象方法和普通方法,而接口里面只有抽象方法。
            抽象类里面可以有自己的属性,而接口里面只能有常量
            接口里面的方法必须是public的,而抽象类不同


           (2)、抽象类和接口的相似之处
            抽象类里面的抽象方法在继承的时候必须都要重写(实现),接口里面的方法也必须都要实现。
            抽象类和接口都不能直接实例化,
        抽象类需要继承(extends),接口需要实现(implements)。
            抽象类和接口都体现了多态的特性。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值