面向对象思想 
        概述:基于面向过程. 就是你找一个对象来完成一件事,这个对象包含了完成事情的过程. 
 
类与对象 
        类: 对事物的描述  -- 虚 
        对象: 该事物的实体,实例  -- 实  
        关系:  定义类,使用对象. 
                类是对象的描述,对象是类实体.  
 
定义类 
        格式: 
                class 类名 { 
                } 
        成员变量: 事物的属性  --天生的     --通常叫属性 
        构造方法: 初始化数据  new 类();           --通常叫构造  
        成员方法: 事物的行为  --后天的           --通常叫方法  
 
 
面向对象的三大特征 
        封装 
                步骤:1.使用private修饰成员(通常修饰属性),隐藏成员 
                         2.提供公共的访问方式 (get/set)  
 
                private: 
                        作用:隐藏属性,不让外界直接访问 
                        特点:只能本类访问  
                this: 当局部变量隐藏成员变量时使用this 
                        作用:指代当前(本类)对象,通常修饰成员变量  
                static:  
                        特点:静态. 
                        修饰的成员变量,值被所有对象共享. 
                        修饰的成员方法,直接类名调用. 
                                 
        继承 
                概述:子类继承父类, 
                特点:1.父类成员子类可以直接使用 
                         2.类与类形成了关系,从而形成体系 
                         3.多态的前提 
                注意事项: 
                        1.父类私有的子类不能访问 
                        2.构造方法不能用 
                        3.不能随便继承 
                        4.类与类是 "is a" 的关系,可以使用继承  
 
                super:表示父类存储空间的标识(理解为父类引用) 
         
                成员关系 
                        成员变量(同名):使用子类 
                                想要使用父类super.成员变量 
                                 
                        构造方法:不能继承,但是子类会访问父类构造super() 
                                加载顺序:创建子类时,先访问父类的构造 
                                注意事项: 
                                        1.super(参数),访问父类的有参. 
                                        2.位置必须在第一行 
                                         
                                         
                        成员方法(同名):使用子类 
                                重写概述:父类和子类方法声明一模一样(返回值类型,方法名,参数列表) 
                                注意事项: 
                                        私有:不能重写 
                                        权限:子类的权限不能更低 
                        静态方法:必须使用静态重写. 
 
                                         
                        面试题: 
                                重写与重载的区别: 
                                override: 父类和子类方法声明一模一样(返回值类型,方法名,参数列表) 
                                overload: 同一类中,方法名一样,参数列表不同,与返回值类型无关 
 
                final:  最终 
                        概述: 修饰类  成员变量,方法  
                        特点:被修饰的东西不能被更改  
                                类: 不能继承 
                                变量: 只能赋值一次 
                                方法: 不能重写 
                 
        多态:  
                概述:一种事物多种形态(H2o , 动物 ,水果....) 
                前提: 
                        1.子类继承父类,或者实现接口 (必须二选一) 
                        2.方法重写(非必须) 
                        3.父类引用指向子类对象(最必须) 
 
                                Fu f = new Zi(); 
                                 
                成员关系: 
                        成员变量:编译看左边,运行看左边 
                                 
                        构造方法:编译看左边,运行看左边 
                                 
                        成员方法:编译看左边,运行看右边  ***** 
                                 
                        静态方法:编译看左边,运行看左边 
                                 
                子类特有的方法: 
                        向上转型:从子类转向父类 
                                格式: Fu f = new Zi(); 
                        向下转型:从父类转向子类 
                                格式 : Zi z = (Zi)f; 
 
注意: 参数传递为类,抽象类,接口 --案例练习 (钢铁侠,榨汁机,发牌机)                 
        ------------------------------------------------------- 
 
 
抽象类 
        概述:无法具体描述的类,通常定义父类为抽象类 
        特点: 
                1.格式:abstract class 类名{ 
                } 
                2.类中可以有抽象方法,和非抽象  
                        abstract 返回值类型 show(); 
                3.有构造方法,但是不能new  
                4.想new抽象类,只能ne它的子类 
                5.子类: 要么是抽象的 
                                要么必须重写抽象方法 *** 
                 
        成员特点: 
                a:成员变量:既可以是变量,也可以是常量。 
                b:构造方法:有。 
                                        用于子类访问父类数据的初始化。 
                c:成员方法:既可以是抽象的,也可以是非抽象的。 
        面试题: abstract 不能和哪些关键字共存? 
                        private    冲突 -- 对子类隐藏,而 abstract 必须让子类重写  
                        final      冲突 -- 不能被重写,矛盾  
                        static     无意义-- 类名调用,没有方法体,无意义 
接口 
        概述:实现类的扩展功能 
        本质:定义的规则 
        特点: 
                1.格式: interface 接口名{ 
                } 
                         
                        使用: class 子类 implements 接口名{  // 可以实现多个接口 
                                //重写所有的抽象方法   
 
                        } 
                2.成员变量: 只能是常量 
                3.成员方法: 只能是抽象 
                4.构造方法: 无 
                5.实例化: new 子类(); 
                6.子类要求:重写所有的抽象方法   
                          
         
        类与类,类与接口,接口与接口关系--看图  
 
 
内部类 
        概述: 类里面的类 (人里面的心脏) 
        成员内部类: 
                格式: 
                        class Outer{ 
                                class Inner{ 
                                } 
                        } 
                         
                 
                         
                注意:如果private 修饰 内部类,那么就不能直接创建,提供公共的访问方式.(封装的思想 ) 
        局部内部类: 
                格式: 
                        class Outer{ 
                                show(){ 
                                        局部变量必须final; 
                                        class Inner { 
 
                                        } 
                                } 
                        } 
                问题:只能访问被final修饰的局部变量吗? 
                肯定的.局部变量和内部类的生命周期不同,所以使用final把局部变量变成常量. 
匿名内部类: 
        前提:有一个接口或者类 
        本质: *匿名对象*-- 实现了接口,或者继承了类的匿名子类的对象   
        new 接口(){ 
                抽象方法  
        }; 
 
代码块:  
        静态:执行一次,类加载的时候 
        static { 
                 
        }  
        构造:执行多次,调用构造方法 
        局部:及时回收变量,提高运行效率 
         
权限修饰符: 
                                        本类                同包                不同包子类                不同包其他类 
        private                         *  
        default                         *                        *                          
        protected                 *                        *                                * 
        public                         *                        *                                *                                * 
 
常用 public 修饰 类 和方法  
和         private 修饰 成员变量  
 
 
 |   
        
 
    
    
    
     
 
 |