类与对象
Java是面向对象的语言,所有Java程序都以类class为组织单元,关键字class定义自定义的数据类型。
开发方法
面向过程开发:结构化开发。面向功能划分软件结构;自顶而下;最小的子系统是方法;制约了软件的可维护性和可扩展性。
面向对象开发:面向对象程序设计(Object Oriented Programming,OOP),把软件系统看成各种对象的集合;系统结构较稳定;子系统相对独立;软件可重用性、可维护性和可扩展性强。
- 对象:用来描述客观事物的一个实体,由一组属性和方法构成
- 属性:对象的特征,指对象具有的各种特征
- 方法:对象的特征,指对象执行的操作
- 类:具有相同属性和方法的一组对象的集合,类是对象的抽象,对象是类的具体。
面向对象编程更加符合人类思维习惯,编程也更直观。
类
类是抽象的,具有相同属性和方法的一组对象的集合。
public class 类名 {
//定义属性部分(成员变量)
属性1的类型 属性1;
…
属性n的类型 属性n;
//定义方法部分(成员方法)
方法1;
…
方法m;
}
定义类的步骤
(1)定义类名:类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义
(2)编写类的属性
(3)编写类的方法
成员变量本身存在默认值,定义成员变量时一般不需要赋初始值(没有意义)。
修饰符 数据类型 变量名称 = 值;
数据类型 | 明细 | 默认值 |
---|---|---|
基本类型 | byte、short、char、int、long | 0 |
基本类型 | float、double | 0.0 |
基本类型 | boolean | false |
引用类型 | 数组、String | null |
一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了。
s1 = null;
s2 = null; //相当于取消了地址
当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。Java存在自动垃圾回收机制会自动清除掉垃圾对象。
类图用于描述类,直观、容易理解地分析和设计“类”
Dog // 类名
+ name:String // 属性名:类型
+ health:int
+ love:int
+ strain:String
+ print():void // 方法名(参数):返回值类型
"+":public "-":private
参数:名字:类型,名字:类型
对象
用来描述客观事物的一个实体,由一组属性和方法构成。对象本质上是一种特殊的数据结构。对象是用类new出来的,有了类就可以创建出对象。
类和对象的关系?
- class也就是类,称为对象的设计图(对象的模板);
- 类是抽象的,对象是具体的,类仅仅是一个模板,由类创建的对象;
- 使用class关键字构建类;
- 使用new关键字构建对象
通过类创建对象:类名 对象名 = new 类名();
Dog dog = new Dog();
引用类的属性:对象名.属性
dog.name = "汪汪"; // 给name 属性赋值
引用类的方法:对象名.方法名()
dog.run(); // run()方法
方法
方法:完成某个特定的应用程序功能,并返回结果。
类的方法定义类的某种行为(或功能)
访问修饰符 返回值类型 方法名(){
//方法主体
}
public void show(){
System.out.println("姓名:" + name + ",密码:" + password);
}
// 方法名:遵循小驼峰命名规则,要有意义。
// 访问修饰符:public 共有的
// 返回值类型:void 没有返回值
方法的返回值:如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该值的类型。且返回值只能有一个。如果方法没有返回值,返回值类型为void
public class Student{
String name = "张三";
public String getName(){
return name; //return作用:跳出方法、返回结果
}
}
方法调用:方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率
// 例1:Student类的方法a( )调用Student类的方法b( ),直接调用
public void a() {
b();
}
// 例2:Student类的方法a( )调用Teacher类的方法b( ),先创建类对象,然后使用“.”调用
public void a() {
Teacher t = new Teacher();
t.b();
}