开发随手记-面向对象(一)重点

在Java编程中有一句关于对象的说法,即万事万物皆对象。例如现实生活中的人、车、狗等等都可以看为是一个个的对象。拿一条狗举例,它的属性/状态有:名字,品种,颜色等,它的行为有:跑、跳、吃摇尾巴等等。那么换为Java软件中对象,属性就是状态行为通过方法去体现。

包 package

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。每个类都在包下。

作用

  1. 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  2. 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  3. 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类

命名与路径

  1. 包的名称都使用小写字母,避免与类或接口的命名冲突。
  2. 可以通过.使包出现层级,便于分类。
  3. com.dj.util 那么这个包的路径就是com/dj/util。

包的声明

  1. 包的声明使用package关键字。例如:package 包路径;
  2. 包声明必须在源文件(类、接口等)的第一行,并且一个源文件只可以拥有一个包的声明。
  3. 如果没有声明包的源文件,Java会自动的将它放入到无名包(unnamed package)中。

import关键字(导包)

当A包中的某一个类想使用另一个包中的某个类中的方法时,就需要使用import将该类导入到本类中,才可以调用。

注意:

  1. 导包时的包路径必须写到文件名(不带后缀)。
  2. 导包时最后以*结尾表示,对应包下的所有类都被导入了。
  3. Java中同包下的类之间相互调用可以不用导包。
  4. 一个类可以导入N个包。
  5. java.lang是一个特殊包,它包下的内容是Java最基础与核心的内容,在Java程序运行时会自动的把lang包下的内容导入,所以我们在使用java.lang下的内容都无需我们手动的去导包。例如,基本数据类型,与String类都在该包下,所以我们在调用时无需导包。

引用类型的使用

与基本数据类型不同,引用数据类型的变量定义有一个相对固定步骤格式

定义步骤:

  1. 导包:使用import导包,在类的所有代码之前导包(找到要使用的类型),java.lang包下的所有类无需导入,可以直接使用
  2. 创建对象:引用类型 变量名 =  new引用类型();
  3. 调用:变量名.方法名();

键盘输入 Scanner类

Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入。

使用步骤:

  1. 导包:import java.util.Scanner;
  2. 创建对象实例:Scanner input = new Scanner(System.in);
  3. 调用方法:

nextInt():接收一个整数。 int age = input.nextInt();

next():接收一个字符串。  String name = input.next();

 

随机数 Random类

生成随机数需要使用到引用类型随机数Random类。

使用步骤:

  1. 导包:java.util.Random;
  2. 创建对象实例:Random random = new Random();
  3. 调用方法:

 

 

字符串 String类

String类是一个特殊的引用类型,它在java.lang包下,所以我们在使用它时可以不用导包,并且可以不用new的方式来获取它的实例。

String实例的创建方式:

  1. String str = "hello world";
  2. String str = new String("hello world");

自定义数据类型/引用数据类型/类class

任何编程语言想要将现实生活中的事务抽象成代码,就需要使用自定义数据类型(类)来定义和描述。

在Java中,class(类)也是一种数据类型,自定义数据类型也叫做引用数据类型。由我们自己创建和描述,并非Java事先为我们提供好的数据类型。

类声明

类在类声明出来后必须使用,不使用Java不会出现语法错误,但是声明出来不使用的话,这样的类是没有意义的,同时也会造成程序的负担。

语法:

修饰符 class 类名{}

注意:
  1. 必须使用class关键字。
  2. 类名必须和文件名保持一致
  3. 类中的内容必须在{}内。

类使用

语法:className 变量名 = new clasName();

步骤:

  1. 自定义数据类型与其它引用数据类型在创建/实例化方式上相同。都需要进行导包。
  2. 使用new关键字进行类(对象)的实例化。
  3. 调用方法或访问属性。

类的组成

类class作为Java面向对象的一个模板,它描述一类对象的行为状态。类可以看成是Java面向对象的模板

属性/变量(状态)

变量类型

全局变量:类中的属性、方法外的变量,都可以看为全局变量。这种变量可以被类中所有的方法、构造方法和特定类的语句块访问。

局部变量:在类中方法内或特殊代码块内定义的变量被称为局部变量。这种变量只能在本方法内被使用。

全局变量

 

局部变量 

 

变量作用域
  1. 全局变量可以在本类中任意方法或代码块内使用。
  2. 局部变量之内在被定义的方法内或特殊代码块内使用。

方法(行为)

软件的本质是为我们提供了解决日常事务的许多功能。在Java当中通过方法的方式来完成这些功能。即Java中的某个方法提供了某种功能,供我们解决问题。例如Scanner、Random。

我们可以将一个完整功能的代码组织成一个方法,在再次完成相同的功能时,便可以直接以整体的方式调用该功能,而不需要再将具体实现过程完整重复编写一遍。

什么是方法
  1. 方法是解决一类问题的步骤的有序组合。
  2. 方法包含于类或对象中。
  3. 方法在类中被创建,在其它地方被使用。
方法的构成
命名规则:
  1. 必须以字母,_,$开头。
  2. 不能以数字开头。
  3. 小驼峰法则,见名识意。
方法声明:

修饰符 返回值类型 方法名(参数类型 参数名){

方法体

return 返回值;

}

修饰符:可选的、定义了该方法访问类型。

返回值类型:方法需要返回到结果,返回值类型可以是:基本数据类型,引用数据类型,数组,集合、自定义数据类型等。但没有返回值的情况可以使用void关键字。

方法名:是方法的实际名称,供调用时使用。

参数类型:调用方法时传入的参数类型。可以是基本数据类型,引用数据类型、数组、集合等。

参数名:是一个变量,用于接收在方法被调用时传入的数据。参数的个数可以是多个,也可以不包含任何参数。

方法体:方法体包含具体的语句代码,定义该方法的功能。

return:用户方法结束方法以及返回对应的数据。

返回值:被return返回的值,该值会返回给方法的调用者,返回值必须与返回值类型相同。

 

方法使用/调用

所有被声明出来的方法,都是为了被调用。没有被调用的方法,声明出来是没有意义的。

调用步骤:

  1. 创建对应方法对象(类)的实例。
  2. 对象名.方法名(对应参数);

 

 

注意
  1. 方法都是在类中被定义的。
  2. main方法是类中一个特殊的方法,作为程序的入口被jvm调用。
  3. 在本类中的方法可以互相调用,无需创建对象。
  4. 方法必须先定义在使用。
  5. 方法的定义顺序和调用无关。
方法的优点
  1. 使程序变的简短而清晰。
  2. 有利于程序的维护。
  3. 可以提高程序开发效率。
  4. 提高了代码的重用性。

构造方法/构造器(必有)

每个类中都有构造方法,在本类被创建(实例化)时都会调用对应的构造方法。

构造方法分为:

  1. 有参构造方法。
  2. 无参构造方法(默认)。

构造方法语法:

  1. 构造方法的方法名必须和类名相同
  2. 1个类中可以同时存在多个不同的构造方法
  3. 如果定义了有参的构造器,默认无参的构造器就失效。如需无参构造器,需要创建无参构造器。

构造方法作用:

  1. 一般常用来初始化类中的属性值。
  2. 类中某些功能需要在类被创建/实例化时必须使用。

使用this关键字可以区分全局变量和局部变量之间发生的名称冲突

构造方法和普通方法区别:

  1. 语法:构造方法直接修饰符 类名(){}
  2. 调用:构造方法在 new 的时候被调用。普通方法在new之后通过.方法名()被调用。
  3. 方法名:构造方法必须和类名保持一致,普通方法随意起名字。

修饰符

修饰符用来定义变量、类、方法等,通常放到语句的最前面。

访问修饰符

公共的public对所有的类可见
受保护的protected对同一包内的所有类和子类可见。
默认的default在同一包内可见。
私有的private私有的,同一类内可见。

修饰符

当前类

同一包内

子孙类

其他包

public

Y

Y

Y

Y

protected

Y

Y

Y

N

default

Y

Y

N

N

private

Y

N

N

N

非访问修饰符

final
  1. 用来声明常量
  2. 被final修饰的类不可以被继承
  3. 被final修饰的方法不可以重写
static
  1. static修饰的变量为静态变量,局部变量不能使用static修饰。
  2. static修饰的方法为静态方法,只可以使用静态的全局变量。例如主程序 main方法。
  3. 类中的静态方法不需要实例化就可以调用。

 

 

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值