阶段一模块二任务三 static和继承

&&&&&&&&&&总结

&  static关键字


    概念,使用方式,构造块和静态代码块,单例类设计模式,饿汉式和懒汉式等

 

&  继承


    概念,特点,方法的重写,重写的原则,

 

&  访问控制


    public,private,package,导入等

 

&  final关键字


    概念,修饰类,成员方法,成员变量,常量


 
 1,static关键字
    


    a,基本概念


        表示静态的含义,此时成员变量由对象层级提升至类层级,
        即整个类只有一份,且被所有成员共享
        该成员变量随着类的加载准备就绪,与是否创建对象无关


        
    b,使用方式


        在非静态的成员方法中能访问非静态的成员又能访问静态的成员
        (成员: 成员变量 + 成员方法, 静态成员被所有对象共享)
        
        静态成员方法中只能访问静态成员不能访问非静态成员
        (成员: 成员变量 + 成员方法, 因为此时可能还没有创建对象)
        
        在以后的开发中 只有隶属于类层级并被所有对象共享的内容
        才可以使用static关键字修饰
        


2,构造块和静态代码块(熟悉)


    
    a,构造块:

                   在类体中直接使用{}括起来的代码块
                   每创建一次对象都会执行一次构造块
        


    b,静态代码块

 

                    使用static修饰的构造块
                    静态代码块只会执行一次


        
3,main方法详解 

           java MainTest  关羽  张飞  赵云   黄总   马超  

         以上即为赋参

 

4,Singleton类的实现(重中之重 )

                 //1.私有化构造方法,使用private
                    private Singleton(){}

                //2.声明本类类型的引用指向本类类型的对象,使用private和static共同修饰
                   private static Singleton sin = new Singleton();        //饿汉式

                //3.提供公有的get方法负责将对象返回出去,使用public static关键字共同修饰
                    public static Singleton getInstance() {

                            return sin;
                    }

================main方法中==========>>>>>>>>>>>>>

                    Singleton s1 = Singleton.getInstance();
                     Singleton s2 = Singleton.getInstance();
                     System.out.println(s1 == s2);    //true

               

5,单例类设计模式, 即Singleton类 (例如任务管理器)


    
    a,实现流程


        私有化构造方法使用private修饰
        
        声明本类类型的引用指向本类类型的对象,并使用private static 关键字共同修饰
        
        提供公有的get方法负责将对象返回出去,并使用public static 共同修饰
        


        
6,继承


    
    a,继承的由来和概念


    
        将相同内容提取出来组成一个公共类,让多个类吸收公共类中已有特征和行为,
        而在多个类型中只需要编写自己独有的特征和行为的机制
        
        在Java中使用extends(扩展)关键字类表示继承关系
        
        例如:
                public class Worker extends Person {}    - 表示Worker类继承自Person类
                其中    Person类叫做超类,父类,基类
                        Worker类叫做派生类,子类,孩子类


                        
    b,继承的意义


        
        提高了代码的复用性, 可维护性及扩展性, 是多态的前提条件


    
    c,继承的特点


    
        &子类不能继承父类的构造方法和私有方法,但私有成员变量可以继承但是不能直接访问
        
        &无论使用何种方式构造子类的对象时,都会自动调用父类的无参构造方法,
        来初始化从父类中继承的成员变量,相当于在构造方法的第一行增加代码super()的效果
    
        &使用继承必须满足逻辑关系: 子类 is a 父类,也就是不能滥用继承
        
        &Java语言中只支持单继承不支持多继承,也就是一个子类只能有一个父类,
        但一个父类可以有多个子类

阶段一模块二任务三 static和继承

 


7,方法重写


    
    a,概念


        从父类中继承下来的方法不满足子类的需求时,就要在子类中重新写一个和父类一样的方法
        来覆盖从父类继承下来的版本,该方式就叫做方法的重写(Override)
        


    b,原则(复制过去就行)


        要求方法名相同,参数列表相同以及返回值类型相同,从Java5开始允许返回子类型
        
        方法的访问权限不能变小,但是可以变大或者相同
        
        要求方法异常只能变小

 

8,构造块和静态代码块的考点(笔试)

 

    先执行父类的静态代码块,再执行子类的静态代码块
    
    执行父类的构造块,执行父类的构造方法体
        
    执行子类的构造块,执行子类的构造方法体
        


9,权限修饰符和包


    
    a,常用的访问控制符


        修饰符                      本类       同一个包中的类        子类        其他类
    
        public                         可                   可                      可             可
        
        protected                    可                  可                      可            不可        
         
        默认(啥都不写)           可                  可                     不可        不可        
    
        private                        可                 不可                   不可        不可        
        
        public修饰的可在任意位置使用
        private修饰的只能在本类使用
        通常情况下, ,成员方法都用public,  成员变量都private
    


    b, 包package语句


        
        &由来


            定义类时需要指定类的名称, 但如果仅将类名作为类的唯一标识,
            则不可避免的出现命名冲突的问题,
            会给组件复用以及团队间的合作造成麻烦
            
            在Java中使用package来区别
        


        &定义


            在定义一个类时,除了定义类的名称,一般还要指定一个包名,格式如下:
            package 包名;
            package 包名1.包名2.包名3...包名n;
            
            为了实现项目管理,解决命名冲突以及权限控制的效果
            


        &规范


            org.apache.commons.lang.StringUtil
                其中StringUtils是类名而org.apache.commons.lang是多层包名,含义:
                org.apache表示公司或组织的信息,    commons表示项目名称, 
                lang表示模块的名称信息
                


        &导入


            使用import关键字导入包
            使用import关键字导入静态成员,从Java5.0开始
            


10,final关键字


    
    a,概念


        可以修饰类,成员方法,成员变量
        


    b,使用方式


        
        final修饰类体现在该类不能被继承
            - 主要用于防止滥用继承, 如: java.lang.String
            
        final修饰方法现在该方法不能被重写,但可以被继承
            - 防止不经意间造成重写,如: java.text.Dateformate类中的format方法等
            
        final修饰成员变量体现在该成员变量必须初始化且不能改变
            - 主要用于防止不经意间造成改变,如: java.lang.Thread类中MAX_PRIORITY等
            


11,常量

 

    在以后的开发中很少单独使用final关键字来修饰成员变量,
    通常使用public static final关键字共同修饰成员变量来表达常量的含义,
    常量的命名规范要求是所有字母都要大写,不同的单词之间采用下划线连接
    
    目的是(类名.)就可以访问,不用创建对象