类与对象
- 回顾
- 面向对象与面向过程
- 对象和类
- 包和引入
面向对象与面向过程
- 面向对象 以事件为中心,分析解决事件的步骤,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,实现的时候一个一个依次调用就可以了
- 面向过程 以事物为中心,分析某问题需要参与的事物,它具有封装性,继承性以及多态性。
案例: 把大象装进冰箱
- 面向过程: 把冰箱门打开(open) 大象塞进去(put) 关上冰箱门(close)
- 面向对象: 冰箱(open put close) 大象
对象和类
对象: 在面向对象的思想中 万事万物 都是对象,比如:张三、一个杯子、一只笔等等
为什么说这是一个杯子 这是一只笔?因为他们具备杯子或笔的特点
-----》对象 具有明确的属性和行为(方法)
张三 李四 王五
年龄: 18 21 100 -------->属性(名词):附属于事物上的一些特征
性别: 女 男 其他
身高: 172 180 170
吃饭: .... ---------->行为(动词或动名词):事物具有的动作 --》可以做什么事情
睡觉: 。。。
打豆豆: 。。。
类: 就是对同一类对象的 属性和行为 的 抽象和总结
对象是类的一个实例展现
张三 李四 王五 ----》人类 / 动物类
张三 李四 王五 小花猫 ----》动物类
类的格式:
类: [修饰符] class 类名{ }
属性:其实就是变量,所以也可以称为变量, 指的是全局变量(成员变量)---》类的内部 方法的外部
[修饰符] 数据类型 变量名称 [= 变量的值] ;
行为:其实就是 方法 --- 其实也是通常所说的 功能
[修饰符] 返回值数据类型 方法名称( [参数类型 参数名称1, 参数类型 参数名称2,.....] )
{
//逻辑语句
[return 返回值] ;
}
案例:参考上述讲解,创建一个Person类里面含有响应的属性和方法。
创建对象
- 必须使用 new 关键字创建对象。
- Person person= new Person ();
使用对象 利用对象调用类中的属性和方法
- 使用对象(引用) . 成员变量来引用对象的成员变量。
- person.age
- 使用对象(引用) . 方法(参数列表)来调用对象的方法。
- person. setAge(23)
- 同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
public class Person {
private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }
}
画内存
基本图
更改属性值得图
包和引入
Package
做什么的?
用来管理软件开发中大量的类 和 解决命名冲突问题
怎么写?
包名:域名倒着写即可,再加上模块名。
其实内部实现就是靠目录结构来做到的。
- 怎么用?
通常是类的第一句非注释性语句。
注意事项:
- 写项目时都要加包,不要使用默认包。
- 包名要小写
- com.demo和com.demo.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
增加package后的编译问题:
使用:javac -d . Test.java (会自动在当前目录下生成包对应的子目录) java com.bjsxt.Test, 或者 java com/bjsxt/Test
- 当一个类含有包名的时候 该类的完成名称 应该是包名.类名
JDK中的主要包
java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net-包含执行与网络相关的操作的类。
java.io-包含能提供多种输入/输出功能的类。
java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
import
为什么需要import?
如果不适用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不利于编写和维护。通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。
import怎么使用?
import java.util.Date; import java.util.*; //导入该包下所有的类。会降低编译速度,但不会降低运行速度。
注意要点:
- java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
如果导入两个同名的类,只能用包名+类名来显示调用相关类:
java.util.Date date = new java.util.Date(); static import 静态属性导入(JDK 1.5后增加, 了解!!!!):
静态导入的作用:用于导入指定类的静态属性
如何使用:import static java.lang.Math.*;//导入Math类的所有静态属性 import static java.lang.Math.PI;//导入Math类的PI属性
然后,我们可以在程序中直接使用:System.out.println(PI);
上面两种导入方式都是为了便于编写代码,提高可维护性。