A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yang_L 初级黑马   /  2017-12-21 17:08  /  778 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2017-12-22 15:26 编辑

初入就业之六日随笔

    就业第一天

知识回顾:
        Java中的数据类型:
                4类8种
                   整数byte,short,int,long
                浮点数
                   float,double
                字符
                   char
                布尔        
                   boolean
        引用数据类型
                Student s = new Student();
基础类型的转换:
        自动类型转换:
                byte   short char ---int ----long----float---double

                一般由大到小
预算结果


数组:存储多个元素的一种容器
数组的特点:
        元素类型必须一致
        元素有整数索引
        定义好长度无法改变
        可以存储基本数据类型和引用数据类型
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度]


静态初始化
数据类型[] 数组名 = {元素1,元素2,.....}




static静态关键字


        作用:修饰成员变量和成员方法


        特点:修饰的成员被所有的对象所共享
             可以直接使用类名来调用
             静态所修饰的成员加载优先于对象
             随着类的加载而加载,随着程序结束而结束
定义位置不同
        静态成员:在方法区,类解码文件时初始化(在方法区中)
        非静态成员:创建对象时开始加载初始化(在堆内存中)
静态成员在内存中的位置
        方法区中的类的字节码区域中的静态区域中
静态成员的加载时机
        随着所在类的加载而加载
静态成员和非静态成员的区别
        生命周期不同
                静态成员: 随着类的加载而创建, 随着程序结束而销毁
                非静态成员: 随着对象的创建而创建, 随着对象的销毁而销毁
                所以, 静态成员的生命周期优先于非静态成员创建, 晚于非静态成员销毁
        内存中的定义位置不同
静态成员: 方法区中类字节码区域的静态区中
非静态成员: 堆内存中
初始化时机不同
静态成员: 类加载时初始化
非静态成员: 对象创建时初始化


static注意事项;
        静态方法:
                可以调用静态的成员变量
                可以调用静态的成员方法
                不可以调用非静态的成员变量
                不可以调用非静态的成员方法
                只能在静态的方法中调用静态的变量
        非静态方法:
                可以调用静态的成员变量
                可以调用静态的成员方法
                可以调用非静态的成员变量
                可以调用非静态的成员方法
                非静态的方法可以调用静态和非静态


静态方法中没有this对象,因为静态方法随着类的加载而加载,此时没有对象引用




优点:
        对对象的共享数据提供单独空间的存储,
        可以直接被类名,不用在堆中创建对象
弊端:
        访问有局限性(静态只能访问静态)




math类:工具类,包含一些基本的数学运算方法


代码块:
        分类:


                局部代码块:
                        存在于方法中,控制变量的生命周期(作用域)
                        位置:方法中
                        执行时机:执行到方法中的局部代码块时
                        作用:控制变量的声明周期


                构造代码块
                        提取构造方法中的共性,每次创建对象都会执行,并且在构造方法之前执行
                        执行时机:创建一个对象时,在构造方法之前执行,
                        作用:


                静态代码块
                        随着类的加载而加载,只加载一次
                        位置:类中,方法外,static修饰
                        执行时机:加载类时执行,只执行一次
                        作用:加载类时进行初始化操作,只需要执行一次


就业第二天

继承:
        概述:
                1.从已有的类中派生出新的类
                2.已有类成为父类(基类),新类成为子类(派生类)
                3.子类对父类的类型就是继承

        作用:
                多个类有共同的成员变量和成员方法,抽取到另一个类中(父类),再让其他类去继承这个父类,获取父类中的成员变量和成员方法.
        关键字:extends
                作用:子类继承父类时使用
                位置:子类类名后
                格式:权限修饰符 class 类名
        特点:
                1.Java语言只支持单一继承,只能继承一个父类
                2.Java语言支持多层继承,

        注意:
                Java中所有的类都直接或者间接的继承自Object类

继承中成员变量的特点:
                1.子类只能获取父类非私有成员
                2.子父类中成员变量名字不一样直接获取父类的成员变量
                3.子父类中成员变量名字一样的获取的是子类的成员变量
@Override 注解
        用于约束被注解的方法必须是重写父类的方法,父类没有这个方法则报错
        
        方法的重写:在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖).重写了之后使用子类对象调用的是子类的方法

        方法的重载:在同一个类中,有多个方法名相同的方法,但参数列表不同

        重写的应用场景:
                当父类的方法不能完全满足子类使用时,子类重写父类的方法,并可以在方法内部使用super调用父类的方法,这样既有父类的功能,也可以拥有子类特有的功能

        重写的注意事项:
                不能重写父类私有的方法,
                子类方法权限必须大于等于父类权限
继承中成员方法的特点:
                1.子类调用方法时,先调用子类的.子类自己没有再调用父类的.父类没有会报错

super:可以获取父类的成员变量和成员方法,用法和this类似

继承中构造方法的执行顺序:
                在有子父类继承关系中,创建子类的对象,调用子类的构造方法,如果子类的构造方法第一行没有调用父类的构造方法,默认调用父类的无参构造方法.
                肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化,子类可能会使用到

                可以使用super关键字在子类构造方法中调用父类的构造方法


___需要补充    this和super的区别
                        this:当前对象的引用(谁调用就代表谁)
                        调用子类中的成员方法和成员方法
                        
                        super:子类对象父类的引用
                        调用父类的成员变量和成员方法
                注意this和super用于调用构造方法时,必须在构造方法第一行调用

继承的优点:
        提高了代码的复用性
        提高了代码的可维护性
      缺点:
        类的耦合性增强了
        开发的原则:高内聚低耦合
                内聚:自己完成事情的能力
                耦合:类与类之间的关系

匿名对象&final类(最终类)

        匿名对象:
                没有名字的对象,没有变量引用的对象
            格式:
                new 类名().属性;
                new 类名().方法;
                作为参数:Student.eat(new Food("苹果"));
        匿名对象的应用场景:
                当方法只调用一次的时候可以使用匿名对象
                可以当作参数进行传递,但无法在传参之前

        注意:
                匿名对象可以复制,但是赋值没有意义

        final(最终类):修饰符,可用来修饰类,成员方法和成员变量
                final修饰的类:不能被继承,不能有子类
                final修饰的方法:不能被重写,
                final修饰的变量:不可被修改的,是常量
        常量:
                字面值常量:1,2,3
                自定义常量:被final修饰的变量,一点初始化就不可改变
        注意:自定义常量必须初始化,可以选择显示初始化或构造初始化

抽象类成员特点        




抽象类
        概述:无法具体描述的,但能表示出共性
                abstract:关键字,用于修饰方法和类
                抽象方法:不同类的方法是相似的,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法就是抽象方法.修饰符只能用public或protected
        注意:一个类继承了抽象类,这个类也要用abstract修饰
        
        类与抽象类的关系:
                抽象类也是类
                一个子类继承了抽象类后只有2种选择:
                重写抽象类中抽象方法(可以是空实现),
                将该子类也改为抽象类


抽象类成员的特点:
        成员变量:
                可以有成员变量
                可以有常量
        成员方法:
                可以有抽象方法
                可以有非抽象的方法
                构造方法
                可以有, 通过子类调用super()来实现抽象类成员的初始化

abstract不能与final和private一起用
final: 因为抽象方法必须被重写, 而final修饰的方法不能被重写, 有冲突
private: 因为抽象方法必须被重写, 而private方法子类看不见, 所有有冲突
抽象思想的作用: 起到规范的作用



就业第三天
接口
        概述:比抽象还抽象的类,
        接口内都是抽象方法,接口和类的关系是实现.实现关键字:implements
        作用:
                1.用于处理继承单一的局限性,
                2.为实现类扩展出接口具有的功能
定义接口格式:
        权限修饰符 interface 接口名{}
类实现接口格式
        权限修饰符 class 类名 implements 接口名1,接口名2...{}

接口的成员特点:
        1.只能有抽象方法
        2.只能有自定义常量
        3.默认且只能使用public&abstract方法
        4.默认使用public static final修饰成员变量(常量)
   建议:
        定义接口方法时加上public&abstract,为了减少不必要的麻烦
   注意:
        1.接口不能实例化对象
        2.类和接口的关系是实现,类实现接口必须实现它的全部方法

接口不能有构造方法,也不可以实例化对象

类与类    :继承关系,单一继承.多层继承
类与接口  :实现关系,多实现
接口和借口:继承关系,多继承

接口的优点:
        1.类可以实现多个接口
                类与类是单一、多层继承,但具有局限性
                        接口打破了这个局限性
        2.对外提供统一的规则,(类似USB接口)
        3.减低了程序的耦合性,(能够实现模块化开发,定义好规则,每人实现自己的模块,提高开发效率)

抽象类和借口的区别:
        共性:不断的抽取,抽取出抽象的概念
        区别:
             1.与类的关系
                1.类与接口是实现关系,且多实现,一个类可实现多个接口
                2.类与抽象类是继承关系,Java中只能单一继承,且可以是多层继承
             2.成员
                1.成员变量:

                        1.抽象类有成员变量,自定义常量
                        2.接口能有自定义常量,且有默认修饰符public static final
                2.成员方法:
                        1.抽象类有抽象方法,非抽象方法
                        2.接口只有抽象方法,且有默认修饰符public abstract
                3.构造方法:
                        1.抽象类有构造方法,用于初始化成员,不能用于创建对象
                        2.接口没有构造方法,更不能实例化对象


抽象类和借口的用处:
        1.当定义的类可以作为子类的父类,且有抽象的方法时,则定义为抽象类
        2.当定义的类不足以作为子类的父类,而只是用于扩展的功能时,定义为接口

多态
        前提:
                1.子父类的继承关系
                2.方法的重写
                3.父类引用指向子类对象or父接口引用指向子类对象
                        父类引用   Animal cat
                        指向           =
                        子类对象   new Cat()

        动态绑定:
                运行期间调用的方法,根据具体的类型

        多态的成员特点:
                成员变量:成员变量看的父类型,运行时看的也是父类型,因为变量没有重写和动态绑定的
                成员方法:编译看左边,运行看右边
                静态方法:编译看左边,运行看左边

多态中的向上转型和乡下转换
        向上转型:
                由小到大(从子类转到父类),作为参数类型,简化代码
        向下转型:
                由大到小(从父类转到子类),调用子类特有的方法


多态的优缺点
        缺点:无法直接访问子类特有的成员,....
        优点:提高代码可维护性,提高代码可维护性,提高代码复用性

instanceof语句
        作用:判断一个对象是否是某一个类的对象,如果是则返回true,如果不是则返回false.
        格式:对象 instanceof 类名
        常见用法:if(s instanceof Student){}

判断普通类,抽象类和借口的应用场景
        没有抽象方法则定义为普通类
        有抽象方法需要子类实现,且能够概括的描述子类,则适合定义为抽象类
        定义的类只用于扩展某种功能,但又不能概括的描述子类,且该类不需要非抽象的方法


        

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马