JAVA学习笔记(二)

1、什么是类

类是确定对象将会拥有的特征(属性)和行为(方法)

类的特点

    类是对象的类型

    具有相同属性和方法的一组对象的集合

2、什么是对象的属性

    属性:对象具有的各种特征

    每个对象的每个属性都拥有特定值

3、类和对象的关系

    类是抽象的概念,仅仅是模板

    对象是一个你能够看得到、摸得着的具体实体

4、类的重要性

    所有的Java程序都以类class为组织单元

5、类的组成

    属性和方法

6、定义一个类的步骤

    a.定义类名

    b.编写类的属性(属性代表一个类有什么)

    c.编写类的方法(方法代表一个类可以干什么  )

7、使用对象的步骤

    1.创建对象:

        类名 对象名 = new 类名();

    2.使用对象 

        引用对象的属性:对象名.属性

        引用对象的方法:对象名.方法名()

8、成员变量和局部变量

    1.成员变量

        在类中定义,用来描述对象将要有什么

        可以被本类的方法使用,也可以被其他跟本类有关系的其他类的方法使用

    2.局部变量

        在类的方法中定义,在方法中临时保存数据

        局部变量只能在本类的方法中使用

    3.区别

        a.作用域不同

            局部变量的作用域仅限于定义它的方法

            成员变量的作用域在整个类内部都是可见的

        b.初始值不同

            Java会给成员变量一个初始值

            Java不会给局部变量赋予初始值

        c.

            在同一个方法中,不允许有同名的局部变量;

            在不同的方法中,可以有同名局部变量;

        d.

            两类变量同名时,局部变量具有更高的优先级

9、构造方法

    1.使用new+构造方法 创建一个新的对象

    2.构造方法是定义在Java类中的一个用来初始化对象的方法

       构造方法与类同名且没有返回值

    3.无参构造方法的使用

    4. 有参构造方法的使用

    5.当没有指定构造方法时,系统会自动添加无参的构造方法

    6.当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

    7. 构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择对应的方法

    8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值

10、构造方法的语句格式

     public 构造方法名(){

    //初始化代码 

     }

    没有返回值类型

    构造方法名与类名相同

    后面的括号内可以指定参数,也可以不指定;没有参数的构造方法叫做无参构造方法,有参数的构造方法叫做有参构造方法

    有参构造方法和无参构造方法是可以同时存在的 

11、静态变量

        Java中被static修饰的成员称为静态成员或类成员,它属于整个类所有,而不是某个对象所有,即被类的所有对象共享。

        静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问

        使用static可以修饰变量、方法和代码块

        静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收

  12、静态方法

        使用static修饰方法,就是静态方法或类方法

        1.静态方法中可以直接调用同类的静态成员,但不能直接调用非静态成员;

           如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。

        2.在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

        3.静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法

13、静态初始化块

        在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用static修饰初始化块,就称为静态初始化块。

        静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

        程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

        初始化块就是构造器的补充,初始化块是不能接受任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化。好处是可以提高初始化块的复用,提高整个应用的可维护性。

14、面向对象三大特征

        封装、继承、多态

15、封装

        1.概念

            将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

        2.好处:

            a.只能通过规定的方法访问数据

            b.隐藏类的实现细节,方便修改和实现

        3.封装的实现步骤

            a.修改属性的可见性,设为private

            b.创建getter/setter方法,用于属性的读写

            c.在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断

16、Java中的包

        1.包的作用:

            管理Java文件

            解决同名文件冲突

        2.定义包:package 包名

            注:必须放在java源程序的第一行

                    包名间可以使用“.”号隔开

                    eg:com.imooc.MyClass

        3.系统中的包

            java.(功能).(类)

            java.lang(类) 包含java语言基础的类

            java.util.(类) 包含java语言中各种工具类

            java.io.(类) 包含输入、输出相关功能的类

        4.包的使用

            1)可以通过import关键字,在某个文件使用其他文件中的类

            2)java中,包的命名规范是全小写字母拼写

            3)使用的时候不但可以加载某个包下的所有文件

                  eg:com.imooc.*

                  也可以加载某个具体子包下的所有文件

                  eg:com.imooc.music.*

17、Java中的访问修饰符

        访问修饰符:可以修饰属性和方法的访问范围

        private 本类

        默认 本类 同包

        protected 本类 同包 子类

        public 本类 同包 子类 其他

18、Java中的this关键字

    1.this关键字代表当前对象

        this.属性 操作当前对象的属性

        this.方法 调用当前对象的方法

    2.封装对象的属性的时候,经常会使用this关键字

 19、内部类

    1.什么是内部类

        内部类(Inner Class)就是定义在另外一个类里面的类,与之对应,包含内部类的类被称为外部类

    2.内部类的主要作用

        a.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

        b.内部类的方法可以直接访问外部类的所有数据,包括私有数据

        c.内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

    3.内部类有几种

        内部类可以分为:

            成员内部类

            静态内部类

            方法内部类

            匿名内部类

    4.创建内部类对象的方法 

        HelloWorld hello = new HelloWorld();        

        Inner i = hello.new Inner();

       要使用内部类的方法时,首先创建了一个外部类对象,在创建外部类对象时,通过外部类对象.new 内部类()的形式,可以理解为:要使用内部类的方法,首先需要将外部类实例化为一个对象,然后通过外部类的对象对内部类进行实例化,最后再调用内部类的方法。就好比文件系统,你要找一个文件,首先需要知道它在哪个盘,然后再找对应的文件夹

20、Java中的成员内部类

    1.Inner类定义在Outer类的内部,相当于Outer类的一个成员变量的位置,Inner类可以使用任意访问控制符,如public、protected、private等

    2.Inner类中定义的test()方法可以直接访问Outer类中的数据,而不受访问控制符的影响,如直接访问Outer类中的私有属性

    3.定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类();

    4.成员内部类的.class文件是:外部类名$内部类名.class

    5.外部类是不能直接使用内部类的成员和方法的,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法

    6.如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字。

21、JAVA中的静态内部类

    1.静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

    2.如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

    3.创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();

22、Java中的方法内部类

    方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

    由于方法内部类不能再外部类的方法以外的地方使用,因此方法内部类不能使用访问空字符和static修饰符。

23、继承

    1.继承类与类的一种关系,是一种“is-a”的关系。Java中的继承是单继承。

    2.继承的好处:

        子类拥有父类的所有属性和方法,属性和方法的修饰符不能是private。

        如果父类实现了一些功能,子类继承于父类,这样就实现了代码的复用。

    3.语法规则:

        class 子类 extends 父类

24、方法的重写

    1、什么是方法的重写

        如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。

    2、语法规则

        a.返回值类型

        b.方法名

        c.参数类型及个数

        都要与父类继承的方法相同,才叫方法的重写

25、继承的初始化顺序

    1、初始化父类再初始化子类

    2、先执行初始化对象中属性,再执行构造方法中的初始化

26、final关键字

    使用final关键字做标识有“最终的”含义

    final可以修饰类、方法、属性和变量。

    final修饰类的时候,则该类不允许被继承。

    final修饰方法,则该方法不允许被覆盖(重写)。

    final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值),或在构造方法中赋值(但只能选其一)

    final修饰变量,则该变量的值只能赋一次值,即变为常量

27、super关键字

    在对象的内部使用,可以代表父类对象

    1.访问父类的属性

        super.age

    2.访问父类的方法

        super.eat()

    3.super的应用

        子类的构造的过程当中必须调用其父类的构造方法

        如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法

        如果显示的调用构造方法,必须在子类的构造方法的第一行

        如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错

28、Object类

        Object类是所有类的父类,如果一个类没有使用extends关键字明确标识集成另外一个类,那么这个类默认继承Object类。

        Object类中的方法,适合所有子类。

29、Object类常用方法

        1.toString()方法

            在Obkect类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)  

            可以通过重写toString()方法表示出对象的属性

        2.equals()方法

            比较的是对象的引用是否指向同一块内存地址

            一般情况下比较两个对象时比较他的值是否一致

30、多态

        对象的多种形态

        继承是实现多态的基础

        1.引用多态

            父类的引用可以指向本类的对象

            父类的引用可以指向子类的对象,子类的引用可以指向父类的对象

        2.方法多态

            创建本类对象时,调用的方法为本类方法

            创建子类对象时,调用的方法为子类重写的方法或者继承的方法

 31、引用类型转换

        1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

        2.向下类型转换(强制类型转换),是大类型到小类型 

        3.instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

32、抽象类    

        1.语法定义:

            抽象类前使用abstract关键字修饰,则该类为抽象类。  

        2.应用场景:

            a.在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法

            b.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类座位子类的模板,从而避免了子类设计的随意性

        3.作用:

            限制规定子类必须实现某些方法,但不关注实现细节

        4.使用规则:

            a.abstract定义抽象类,且顺序为abstract class

            b.abstract定义抽象方法,只有声明,不需要实现(抽象方法没有方法体,以分号结束)

            c.包含抽象方法的类是抽象类

            d.抽象类中可以包含普通的方法,也可以没有抽象的方法

            e.抽象类不能直接创建,可以定义引用变量

33、接口

        1.接口概念

            接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。

            类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法

        2.接口定义

            和类定义不同,定义接口不再使用class关键字,而是使用interface关键字

            接口定义的基本语法:

            [修饰符]interface 接口名 [extends 父接口1,父接口2…]

            {

            零个到多个常量定义……

            零个到多个抽象方法的定义……

            }

            接口就是用来被继承、被实现的,修饰符一般建议用public

            注意:不能使用private和protected修饰接口

            interface前一定有abstract关键字,如果没有显示的写出来,系统会帮我们加上

            接口名后的[]是可选项

    3.接口定义

        常量:

            接口中的属性是常量,即使定义时不添加 public static final 修饰符,系统也会自动加上

        方法:

            接口中的方法只能是抽象方法,总是使用,即使定义时不添加public abstract修饰符,系统也会自动加上

    4、使用接口

        一个类可以实现一个或多个接口,实现接口使用implements关键字,Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。

        继承父类实现接口的语法为:

        [修饰类] class 类名 extends 父类 implements 接口1,接口2…

        {

        类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。

        }

        如果要继承父类,继承父类必须在实现接口之前,extends和implements是不能调换的。

        PS:创建接口一般在前面加一个大写的I,以区分和普通的类名是不一样的

        接口在使用过程当中,还经常与匿名内部类配合使用

        匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称

34、UML

    1.UML概念

        Unified Modeling Language(UML)又称统一建模语言,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持

    2.UML图形

        UML 2.2一共定义了14中图示(diagrams)。

    3.常用UML图

        用例图(The Use Case Diagram)

       用例图能够以可视化的方式,表达系统如何满足所收集的业务规则,以及特定的用户需求等信息

        序列图(The Sequence Diagram)

        序列图用于按照交互发生的一系列顺序,显示对象之间的这些交互

        类图(The Class Diagram)

        UML类图、业务逻辑和所有支持结构一同被用于定义全部的代码结构

    4.UML建模工具

        Visio、Rational Rose、PowerDesign 三种建模工具应用最广

35、项目分析

    1.数据模型分析

        a.通过对现实世界的事与物主要特征的分析、抽象,为信息系统的实施提供数据存取的数据结构以及相应的约束

        b.数据结构组成:操作(方法)、属性

    2.业务模型分析

        a.在设计应用程序之前,应该明确该应用程序必须执行哪些任务。

            分析业务需求是应用程序开发中最重要的步骤之一。

            确认业务需求的目的在于创建一个能同时满足零售商和消费者需要的解决方案。

    3.显示和流程分析

        a.显示:用户可以看到的信息提示界面。

        b.流程:显示信息的执行过程、步骤。

        

        

        

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值