标签:否则 步骤 改变 组合 可见性 org 检查 计算 理解
面向对象基础 面向对象的特征是:封装、继承和多态
面向对象设计三部曲:
1)发现类、类定义了对象将会拥有的特征(属性)和行为(方法)
2)发现类的属性,对象所拥有的静态特征在类中表示时称为类的属性
3)发现类的方法,对象执行的操作称为类的方法
1、定义类的语法格式:[访问修饰符] class类名{};
访问修饰符有public和private等,类名首字母大写 类的属性:对象所拥有的特征在类中表示时称为类的属性
2、定义属性的语法格式如下:[访问修饰符]数据类型属性名;
访问修饰符是可选的 对象执行操作的方法称为类的方法,eg人有工作的方法,工作就是"人"类的一个方法,"人"类还有很多方法,如吃喝睡觉等
3、定义方法的语法格式:[访问修饰符]返回类型方法名称(参数类型 参数名1,参数类型 参数名2){ }
分析: a\访问修饰符是可选的 b\返回类型可以是void的,在定义方法时,返回类型为void时表明没有返回值,方法中不必使用return返回具体数据,但是可以使用return关键字退出 c\返回类型如果不是void,那么一定要使用return返回对应类型的结果,否则程序会出现编译错误 d\小括号中的“参数类型 参数名1,参数类型 参数名2......"称为参数列表" e\当需要在方法执行的时候为方法传递参数时才需要参数列表,如果不需要参数就可以省略,不过小括号不可以省略,传递多个参数时,以半角的逗号进行分隔
创建和使用对象
类的对象可以调用类中的成员,如属性和方法等
1、创建对象的语法格式:类名对象名=new类名(); a\new是关键字 b\左边的类名为对象的数据类型 c\右边的类名称为类的阿构造方法 2 使用对象,要引用对象的属性和方法要用“.”,使用对象的语法格式如下:
对象名.属性//引用对象的属性; 对象名.方法()//引用对象的方法
3、面向对象的优点:
1)与人类的思维习惯一样:面向对象的思维模式是从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程,面向对象程序设计使用"类"来模拟现实世界中的抽象概念,用"对象"来模拟现实世界中实体,从而用计算机解决现实问题
2)信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和行为封装在类中,这保证了对它们的修改和不会影响到其他对象,利于维护。同时,封装使得在对象外部不能随意访问对象的属性和方法,避免了外部错误对它的影响 ,提高了安全性
3)提高程序的可重用性:一个类可以创建多个对象实例,体现了重用性
类成员包括:成员方法和成员变量
成员方法
带参数的方法
形参和实参,实参就是实际参数,调用方法时实际传入的参数叫做实际参数,简称实参
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型和参数个数
方法重载的特点:
1)在同一个类中 2)方法名相同
3参数的个数或者类型不同方法的返回值不能作为判断判断方法之间是否构成重载的依据
方法重载的优点:方法重载其实时对原来方法的一种升级,可以根据参数的 不同,采用不同的实现方法,而且不需要编写多个名称,简化了类调用方法的代码
成员变量
类的属性,也就是直接在类中定义的变量称作成员变量,它定义在方法的外部 局部变量就是定义在方法中的变量
成员变量和局部变量的区别:
1作用域不同,局部变量仅限于定义它的方法,在该方法外无法访问它。成员变量在整个类都是可见的。所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量
2初始值不同,对于成员变量,如果在类定义中没有给它赋予初始值,Java会给它一个默认值,基本数据类型的值为0,引用数据的值为null。但是Java不会给局部变量赋予初始值,因此局部变量必须定义并赋值后使用
3在同一个方法中,不允许有同名的局部变量,在不同的方法中,可以有同名的局部变量
4局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级
引用数据类型包括三种:类、数组和接口
基本数据类型(或传递参数时)和引用数据类型(或传递参数时)区别:
对于基本数据类型,不同的变量会分配给不同的存储空间,并且存储空间中存储的是该变量的值,赋值操作传递的是变量的值,改变一个变量的值不会影响到另一个变量的值对于引用数据类型,赋值把原对象的引用(内存地址)。传递给另一个引用。对数组而言,当引用一个数组名直接给另一个数组名赋值时,相当于传递了一个引用,此时,这两个引用指向同一个数组,也就是指向同一个内存空间
构造方法:当类创造一个对象时,会自动调用该类的构造方法,构造方法分为默认构造方法和带参的构造方法
什么是构造方法? 语法格式:[访问修饰符]方法名([参数列表]){}
1、构造方法没有返回值 2、默认构造方法没有参数,因此参数列表可选 3、构造方法的方法名和类名相同
构造方法的主要作用是进行一些数据的初始化
构造方法重载,即在同一个类中可以定义多个重载的构造方法
this 关键字是对一个对象默认引用,每个实例方法内都有一个this引用变量,指向调用这个方法的对象
this使用举例如下:
1调用成员变量,解决成员变量和局部变量同名的冲突
2调用成员方法
3调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句
4this只能调用实例变量、实例方法和构造方法
5不能调用类变量和类方法,也不能调用局部变量
封装的实质就是将类的状态信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问
封装有效避免了外部错误对此对象的影响,并且能对对象使用者由于大意产生的错误操作起到预防作用,同样面向对象编程提倡对象之间实现松耦合关系。封装的好处在于隐藏类的实现细节,让使用者只能通过程序员规定的方法访问数据,可以方便加入存储控制符,来限制不合理操作。
松耦合就是指尽量减少对象之间的关联性,以降低它们之间的复杂性和依赖性
封装的步骤:
第一步:修改属性的可见性(将public修改为private后,其他类就无法访问了,如果访问则需要进行封装的第二 步)
第二步:设置setter/getter()方法,用source-setter/getter或者Ctrl+Shift+S由系统添加
第三部:设置属性的存取限制,对属性值设置合法性检查,需要在setter方法中进一步利用条件判断语句进行赋值限制
包机制也是封装的一种形式
它的作用主要有三方面:一包允许将类组合成最小的单元(类似文件夹),易于找到和使用相应的类文件。二防止命名冲突,Java中只有在不同包中的类才能重新命名。类命名相同在所难免,有了包,类名就容易管理了。A定义了一个类Sort,封装在包A中,B定义了一个类Sort,封装在包B中。通过包名区分开A和B分别定义的Sort,如用A.Sort和B.Sort分别对应于A和B定义的Sort类。三包允许在更广的范围内保护类、数据和方法。根据访问规则,包外的代码有可能不能访问该类
定义包的语法格式如下:package包名
1、package是关键字
2、包的声明必须是Java源文件中第一条非注释性语句,而且源文件只能有一个包声明语句,设计的包需要与文件系统结构相对应。
包命名遵守以下编码规范:
1、一个唯一的包名前缀通常是全部小写的ASCII字母,并且是一个顶级域名com\edu\gov\net及org,通常使用组织的网络域名的逆序。eg:如果域名为javagroup.net,可以声明包为:"package net.javagroup.mypackage;"
2、包名的后续部分依不同机构各自内部的规则不同而不同
声明包的含义是生命吗当前类所在的包;导入包的含义是声明在当前类中要使用到的其他类所在的包
类和类成员的访问控制 1、类的访问修饰符有public和默认修饰符,区别默认修饰符在非同一包中不可以使用 2、类成员的访问修饰符private、默认修饰符、protected和public区别:
1)private只有在同一个类中可以使用,在同一个包中、子类中和其他地方不可以使用
2)默认修饰符在同一个类中和同一个包中都可以使用,子类中和其他地方不可以使用
3)protected在同一个类中、同一个包中、子类中都可以使用,其他地方不可以使用
4)public在同一个类中、同一个包中、子类中、其他地方都可以使用
3、用static关键字修饰属性,称为静态变量或者类变量,没有使用static修饰的属性
4、用static关键字修饰方法
用static修饰的方法称为静态方法或者类方法,不用static关键字修饰的方法称为实例方法或者叫成员方法
static和非static的区别:
static中属性称为类变量或者静态变量,方法称为类方法或者静态方法,属性加载顺序:类加载的时候就会执行,方法加载顺序:被调用的时候才执行,所属:属于类 ,调用:对象名和操作符,可以修饰属性、方法和代码块 非static中属性称为成员变量或者实例变量,方法称为成员方法或实例方法,属性加载顺序:创建对象(构造方法)被执行,方法加载顺序:被调用的时候才执行,所属:属于对象 ,调用:对象名和操作符
标签:否则 步骤 改变 组合 可见性 org 检查 计算 理解
原文地址:https://www.cnblogs.com/mej-/p/9784844.html