黑马程序员技术交流社区

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

作者: jkdong    时间: 2015-6-30 23:01
标题: Java0618基础班第八天手敲笔记(1)
day07回顾
    面向对象的特性之一:封装
    封装:隐藏对象的属性和实现细节仅对外提供对外的公共访问方式
   
    private关键字:私有的
        修饰成员变量和成员方法(还可修饰内部类),只能在本类访问,不能在其他类直接访问
        提供公共的访问方式---getters/setters
   
    因为存在局部隐藏成员问题,引出this关键字:
        this:代表所属类的对象的引用,
        谁调用方法this就代表谁
   
    static关键字:
        修饰成员变量成员方法
        特点:
            被类的所有对象所共享
            随着累的加载而加载,优先于对象而存在,静态的方法和属性可以直接使用类名调用
        注意事项:
            静态方法只能静态的成员
            
    API文档的使用
        Random此类的实例用于生成伪随机数流
            伪:不是绝对,相对随机,在近乎无限的测试中可以找出规律,有限情况可视为随机
        
        
        

        
day08
课程目标
    理解继承的概念
    掌握继承的好处和特点
    理解定义继承的原则
    掌握继承关系中子父类成员特点(重点)
    掌握this与super的联系与区别
    理解继承中代码块执行顺序问题
    掌握final关键字
   
   
random类
    构造:Random() -- 无参构造
    功能;
        nextInt() -- 返回Int范围内的一个随机Int值
        

继承(面向对象的三大特性之二)
    概述
        编码过程发现代码重复率其实很高,有效代码并不多
        假如我们把相同的内容提取出来,并让它和其他的类产生一个关系,然后就都具备这样的功能了
        针对这种情况,java就提供了一种技术:继承
        
        提高代码复用性
        
        多个类中存在相同属性和行为时,将这些内容抽取出来,放到一个类里面,该体系其他的类只要继承
        这个类,那么就应该可以拥有这些共性内容了
            Person:父类基类超类
            Student:子类,派生类
        
        通过extends关键字
        
        格式:
            class A extends B
            {
                //子类具体内容
            }
            
        注意:
            子类可以访问父类中的非私有的属性和方法
   
        提高代码的复用性是多态的前提                    (低耦合--连接)
         子类继承了父类,子类就拥有了父类非私有内容     (高内聚--)
        子类不能继承父类私有的成员                      (扩展性--增加功能)
        
        Object是整个类层次的根类
        
        通过继承可以使用父类中的非私有的内容,要想使用只能调用父类中提供的公共访问方式
        
    好处:
        提高了代码的复用性
        让类与类之间产生了关系,是多态的前提
            
    java继承特点
        java只支持单继承不支持多继承,避免多继承产生的调用不明确
        java支持多层继承(多重继承)
            单一的子类可以一直向上继承非私有(纵向上):形成了继承体系
        
    什么时候把类的关系定义为继承
        由于继承体现了一种关系:is a的关系  Xxx is a Yyy
        以后在定义多个类时,多个类之间有is a的关系,就把他们定义为继承
        两个类之间体现为is a的关系
        如果A is a B
        A是子类,B是父类
        
        注意
            尽量不要为了获取部分功能而去用继承
                根本体现的是两个类的关系
                (实际开发中,当确定某个类不会继承自其他类了,同时又迫切需要某个功能时可以使用)
   
    继承关系的子父类特点
        类的组成
            成员变量
            构造方法
            成员变量
        子父类的成员变量关系:
            通过子类访问成员变量时(针对名字相同时):就近原则
                首先在局部找,有就用
                继续在成员中找,有就用
                最后在父类中找,有就用...
               
                各种输出:
                    子类局部范围;直接输出变量名
                    子类成员范围:this.变量名(本类对象的引用)
                    父类成员范围:输出super.变量名
                    
                实际开发中
                    子父类变量和方法尽量不要重名
               
    关键字super
        与this的用法相似
            this代表本类对象引用
            super代表父类内存空间的标识(可以理解为父类对象的引用)通过标识就可以使用该内容
            
            this.变量---当前类的变量
            this.变量---父类的变量
            
            应用
                构造方法
                    this()表示本类构造方法
                    this(参数)根据给定参数去匹配本类的某个构造方法
                    super()父类构造方法
                    super(参数)根据给定参数去匹配父类中的某个构造方法
               
                成员方法
                    this.方法名()--调用本类方法
                    super.方法名()--调用父类方法
   
    方法重写:(子父类成员方法调用)        
        概念   
            子类中出现与父类中一模一样的方法时,会出现方法覆盖(重写)
                子类如果有就用,没有就找父类
            
        方法重写和重载的区别
            方法重写
                子父类中出现方法相同的情况
                    返回值 方法名 参数(除了权限修饰符)
            方法重载
                同一类中,方法名相同,参数列表不同
                    重载只与方法名和参数列表有关
                    
                    @Override--方法的上面,
                    
        注意问题
            父类中的私有方法不可以被重写(子类根本看不到父类中的方法)
            覆盖时,子类访问权限一定要大于等于父类访问权限
                访问权限四个:private<默认(什么也不写)<protected<public
            静态方法只能被静态方法覆盖(静态随类的加载,非静态随对象的加载)
                这个其实不能算对象的范围
            
        覆盖作用
            当子类需要父类功能,而子类又要自己的的特有功能时,使用重写
            可以复写父类中的方法,既沿袭了父类的功能,又定义了子类特有的内容。






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