黑马程序员技术交流社区

标题: Java0618基础班7天手敲笔记(补) [打印本页]

作者: jkdong    时间: 2015-7-5 23:16
标题: Java0618基础班7天手敲笔记(补)
day06回顾
        面向对象基于面向过程
        理解面向对象
       
day07
        课程目标:
                理解封装与其常见的表现形式
                掌握构造方法
                掌握this关键字
                理解代码块及其作用
                理解static关键字功能、用法、特点及注意事项
                了解API文档的制作过程
                掌握API文档的使用
                掌握Math类的常用方法

       
        封装(函数)
                封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
               
                为保证数据的真实性就必须对数据进行校验!要想过校验就必须过逻辑结构语句!
                要想写逻辑结构语句就必须定义方法!
                        所有做逻辑判断循环操作的必须在循环中
               
                这样即使写了方法别人还是可以通过:对象.成员变量直接使用。首先要解决的根本问题是让外界不能直接
                通过对象.成员变量访问数据
                        java就提供了一个修饰符private,该关键字表示私有可用于修饰成员变量和成员方法。
                        被它修饰完毕的内容,在其他类中是不能直接访问的(本类中可以)
                        private是一种访问权限修饰符,用于修饰成员,被私有化的成员只有在本类中有效
               
                接下来要解决逻辑校验问题
                        将成员变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性
                        方法内部加if语句进行逻辑控制
                        /*
                                if (age<0 || age>150)
                                {
                                        System.out.println("年龄输入错误");
                                }
                                else
                                {
                                        this.age = age;
                                }一般在客户端校验,此处只是引出思路
                        */
                       
                        //设置后输出
                        //直接获取
                private仅仅是封装的一种体现
                类,成员变量,成员方法,构造函数
        构造方法
                特点
                        方法名与类名一致
                        没有返回值类型(与返回值为void不同)
                                public Student(){}
                        没有具体返回值
                作用:
                        给对象进行初始化的(构造对象)
                注意事项
                        如果没有给出任何构造方法,系统将默认提供一个无参构造
                                public Student(){}
                        如果显示给出了构造,系统将不再提供默认的无参构造
               
               
                       
        this关键字
                this代表其所在函数所属的对象的引用
                        代表本类对象的引用
                        哪个对象调用方法,this就代表哪个
                用途
                        解决局部变量隐藏成员变量问题
        代码块
                就是由{}括起来的代码
                分类
                        局部代码块
                                定义在方法中
                                作用:让变量尽可能早的从内存消失,提高效率
                        构造代码块       
                                定义在方法外
                                作用:把所有构造方法中的共同的内容定义在构造代码块中       
                                                每次创建对象都会在构造方法之前运行一次
                                                构造代码块要先于构造方法执行
                       
       
        static关键字
                如果有相同字符串,每次都来创建对象都定义一个,这样是不符合实际的。比如国籍
                将来只存储一个关键字该多好
                java提供了static
                它可以修饰成员变量和成员方法
                多个对象共享某个数据的时候,就用static关键字
                类的构成
                        成员变量--外在描述
                        成员方法--对数据进行初始化
                        构造方法--功能
                       
                static修饰成员变量和成员方法
               
                atatic特点
                        随着类的加载而加载;优先于对象存在(对象一new才存在)
                        被本类的所有对象所共享(最大特点)
                                没有被静态的内容实际是所属对象的特殊描述
                                只要一个对象修改其中的值其他对象获取的值
                                举例:饮水机和水杯的问题
                        可以直接被类名调用(不用创建对象就可调用)
                                成员属性
                                        类名.属性名;
                                成员方法
                                        类名.方法名();
                                class Demo
                                {
                                        main()
                                        {
                                                int sum = Demo.sum(10,30);//本类里边,Demo.可以省略
                                                System.out.println("sum="+sum);
                                        }
                                         
                                        public int sum(int i,int j)
                                        {
                                                returen i+j;
                                        }
                                       
                                }
                static对象可以调用静态方法吗?
                        注意事项:
                                静态方法中是没有this关键字的,
                                        因为静态是随着类的加载而加载,而this是对象创建之后才有的
                                静态方法只能访问静态成员变量和静态成员方法,
                                        非静态方法都可访问
                                        静态方法内可以定义静态变量吗?
                                                不可以,原因:方法中的变量是局部变量并不能被方法之外所识别
                                                                                静态变量属于整个类,并不属于某个对象
                                                                               
                                静态的内容可以通过类名访问(类名.静态方法)也可对象调用,推荐使用类名访问
                       
                不同java文件中类的调用
                        同一文件夹下,如果在一个类A中使用另外的类B的内容(不同文件夹时用导包方式)
                                方式1:先编译B再编译A类
                                方式2:直接编译A类,会自动编译B类(推荐)
               
                生成帮助文档(说明书)
                        文档注释可以生成api中的说明文字
                                /**
                                文档内容
                                这是一个操作数组的工具类,它里边有遍历以及获取最值的功能
                                @author itcast
                                @version v1.0
                                */
                       
                        命令格式
                                javadoc存放 目录 doc -author -version  类名.java
                        //javadoc报错:找不到公共类。。。。。
                        此时在class前加public
                        做工具类的时候方法要做成静态的
                       
                %%如何使用jdk提供的api,以math举例
                        api:应用程序编程接口(帮助文档)
                        步骤:
                                找到文档,打开文档
                                点击显示继续点击索引
                                确定要找的math
                                看类的结构
                                        java.lang包的目录可以直接使用,如果不是就导包
                                看类的说明
                                看构造方法
                                        注意:字段--成员变量--属性
                                        1,有构造方法就通过构造方法创建对象调用
                                        2,没有构造方法,这个类的成员一般都是静态--》类调用
                                按照正常的操作方法
                                        左边
                                                是否为静态,静态修饰可以
                                                是否有明确返回值,如果是void
                                        右边
                                                看方法名
                %%                                看参数
                        math中我们需要掌握的功能
                                static int abs(int a)---绝对值
                                static double ceil(double )----向上取整
                                static double floor(double )----向下取整
                                static long round(double a)----四舍五入
                                static int round(float a)----四舍五入
                                double random()---[0.0,1.0)的随机数
                                max(int x,int y)--最大值
                                min(int x,int y)--最小值
                               
day07串讲
        面向对象三大特性之封装
                1)封装概念:隐藏对象实现细节,仅提供公共对外访问方式
                                类:对属性和行为进行封装
                                方法:对功能进行封装
                                变量:
                                隐藏属性
                                        private关键字--私有的
                                                提供公共的方式访问--get/set (getters/setters)
                                       
                                        变量名要起的见名知意(成员和局部重名)
                                                引出this关键字--代表本类对象的引用
                                                解决了局部隐藏成员的问题
                                                还可在构造方法中使用
                                       
                                        局部代码块
                                                方法里出现的{}
                                                控制变量生命周期
                                        构造代码块
                                                定义在方法外面,类里出现的一对{}
                                                为把构造方法里共性的内容提取出来,减少代码的的重复性
                                               
                                                应用特点:先于构造方法而执行,并且每次创建对象都执行               
                                        静态代码块--构造代码块--局部代码块
                                        三个经常结合起来出题目
                                       
                                        atatict关键字:
                                                修饰成员属性和方法,为了让成员被类的多个对象共享
                                                随着类的加载而加载,优先于对象存在,可以直接使用类名调用
                                                格式:类名.变量名
                                                注意:
                                                        静态的方法只能访问静态成员
                                                        静态方法内不能定义静态变量
                                                       
                                        两个java文件
                                                程序的运行依赖于class文件,如果想B类想使用A类里面的东西必须要先保证A.class文件存在
                                               
                                        api文档:应用程序接口(提供了一些可以被调用的现成的工具,找不到自己再去定义)
                生成:java -d 目录 -author -version 类名.java
                打开  index.html
                要求:必须会查api(每个公司都会封装自己的api)
                                索引-搜索-阅读
                                               
                标准的类;
                        私有的成员属性,公共的构造方法,公共的成员方法
作者: 熊肃言    时间: 2015-7-10 23:13
虽然看不太懂,还是给你顶下吧~
作者: jkdong    时间: 2015-7-11 23:17
谢谢  指正!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2