zoukankan      html  css  js  c++  java
  • Java学习笔记-3.类与对象

    一、面向对象程序设计

    1.概念:
       OOA:面向对象的分析,将现实世界进行抽象的分析

       OOD:面向对象的设计

       OOP:面向对象的程序

    2.面向对象的特点:

      (1)封装性:一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体,对象的私有属性只能由对象的行为来修改和读取

                          二是尽可能隐藏对象的内部细节,与外界的联系只能够通过外部接口来实现

      (2)继承性:特殊类的对象拥有其一般类的属性和行为

      (3)多态性:指同一个实体同时具有多种形式,体现在不同的对象可以根据相同的消息产生各自不同的动作

    二、类

    1.类的实现

    [访问控制符] [修饰符] class 类名

    {    //类体开始标志

        [类的成员变量说明]    //成员变量定义及初始化

        [类的构造方法定义]    //构造方法定义

        [类的成员方法定义]    //成员方法定义

    }    //类体结束标志

    2.成员变量

    [访问控制符] [修饰符] 数据类型 成员变量名 [= 初始值];

       注:在没有赋值的情况下,Java将给其一个默认初值(final 变量除外)

    3.成员方法

    [访问控制符] [修饰符] 返回值类型 方法名([形式参数表])

    {

        [变量声明]    //方法内用的变量,局部变量

        [程序代码]    //方法的主体代码

        [return [表达式]]    //返回语句

    }

    三、对象

    1.对象的创建和使用

       对象创建格式: 类名称 对象名称 = new 类名称(参数值列表);

       也可以细分为: 类名称 对象名称 = null;    //在栈内存中声明

                             对象名称 = new 类名称(参数值列表);    //在堆空间声明

       对象引用属性和调用方法格式:对象名称.成员变量名;

                                                 对象名称.成员方法名(实际参数表);

    2.Java的内存机制:Java存在两种内存:栈内存、堆内存

       基本类型的变量和对象引用都是在栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当变量所在代码块运行结束,Java会自动释放掉为该变量分配的空间

       堆内存用来存放由new创建的对象,在堆中分配的内存,由Java虚拟机的自动垃圾回收器管理

       实质:在栈内存中创建对象引用,在堆内存中创建对象本身

       例:Person xiaoming2 = null;

             xiaoming2 = xiaoming;    //对象本身并没有复制,被复制的只是对象引用

    3.与C++的区别:Object o2 = o1;

       在Java中只是把对象o1的引用复制给了o2,它们指向同一个对象,即只有一个对象

       在C++中将一个名为o1的对象的数据复制给o2,即存在两个对象,它们的值相同

    四、方法

    1.方法参数传递:Java只有一种参数传递方式,即按值传递

       如果实参是基本类型的数据,形参得到的是基本类型数据的一份拷贝

       如果实参是对象或者数组时,形参得到的是对象引用的拷贝,即实参和形参指向同一对象

    2.方法的重载:在一个类中两个或更多的方法拥有相同的方法名,但是参数列表各不同

                         编译器会根据实参列表数中参数数目及类型来决定调用哪个方法

      注:返回值类型不能用于区分方法

            一般建议,同一组重载方法应当具有相似的功能,这样能增强程序的可读性,便于程序的维护

    3.构造方法:在创建对象时被调用

       特征:具有与类相同的名称,方法声明中未定义返回值类型,没用return返回值

       如果没有在一个类里定义构造方法,系统会自动为这个类产生一个默认的构造方法

       注:构造方法也可以被重载

    4.局部变量:Java中没有为局部变量提供默认值,作用域:声明开始到包含它的块尾

       在Java中,不能在嵌套的两个块中声明同名变量,但在互不嵌套的不同块中可以多次声明同名变量

    五、关键字this

    1.this:当前对象

       当方法内的局部变量和类的成员变量同名时,成员变量就会被隐藏,这时如果想在成员方法中使用成员变量,则必须使用关键字this

    2.如果某个构造函数的第一条语句具有形式this(…),那么这个构造函数将调用本类的其他构造函数

       例:

       ThisDemo(String s) {

           System.out.println(“constructor s = ” + s);

       }

       ThisDemo(int i, String s) {

           this(s);

           this.i = i;

       }

       注:通过this调用构造函数,必须为当前构造函数的第一行,且构造方法只能调用一个构造函数

    六、关键字static

    1.关键字static可以用来修饰类的成员和成员方法。

       如果将关键字static放在一个成员变量声明前,该变量就成为静态变量,也成为类的成员变量

       如果将关键字static放在一个成员方法定义前,该变量就成为静态方法,也成为类的成员方法

    2.静态变量(方法)可以直接通过类名访问(不提倡通过相应对象访问),且调用不需先实例化

    3.静态方法没有相应的this引用

       静态方法中不能直接访问所属类的非静态变量和非静态方法

       非静态方法可以直接访问所属类的静态变量和静态方法

    七、包

    1.package的声明格式:package 包名;

       当包中还有子包时,可以使用“包1.包2…包n”进行指定

       包名可以理解为一个目录名

    2.package的导入格式:import 包名.类名称

       注:此类必须声明成public

             引用一个包中的全部类:可用”*”表示,例:import test.demo.*

    八、访问控制

    1.类成员的访问控制符

    控制等级 同一个类中 同一个包中 不同包中的子类 任意类
    private      
    default    
    protected  
    public

    2.类的访问控制符

    控制等级 同一个包中 不同包中
    default  
    public
  • 相关阅读:
    Python程序执行时的不同电脑路径不同问题
    Python写的计算器程序(主要目的在于熟悉下正则表达式)
    占位符
    selenium自动化测试浏览器驱动安装(属于转载文章)
    python的pip升级问题
    索引
    视图
    事务
    引擎
    约束
  • 原文地址:https://www.cnblogs.com/trj14/p/4287215.html
Copyright © 2011-2022 走看看