一、类和对象
类(Class)和对象(Object) 是面向对象的核心概念。
- 类是对一类事物的描述,是抽象的、概念上的定义。
- 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
如图类比理解:
面向对象程序设计的重点是类的设计。而类的设计,其实就是类的成员的设计。 1.类的成员: 属性(成员变量/field)和方法(行为/成员方法/函数)。 如: 类的语法格式:
修饰符 class 类名 {
属性声明;
方法声明;
}
说明: 修饰符public:类可以被任意访问
2.如何使用类? 类的实例化: 创建类的对象。
- 创建对象语法: 类名 对象名 = new 类名();
- 使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
public class Animal {
public int legs;
public void eat(){
System.out.println(“Eating.”);
}
public viod move(){
System.out.println(“Move.”);
}}
public class Zoo{
public static void main(String args[]){
Animal dx=new Animal();
dx.legs=4;
System.out.println(dx.legs);
dx.eat();
dx.move();
}
}
3.一个类多个对象情况 每个对象都独立的拥有一套类的属性。 4.内存解析(类比数组) 堆(Heap):存放对象实例(属性)。 栈(Stack):是指虚拟机栈。虚拟机栈用于存储局部变量等。 方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 5.属性(成员变量)和局部变量 5.1 属性(成员变量) 格式: 修饰符 数据类型 属性名 = 初始化值 ;
- 常用的权限修饰符有:private、protected、public
- 其他修饰符:static、final (暂不考虑)
5.2 相同与不同点 相同:
- 定义变量格式: 数据类型 变量名 = 变量值;
- 先声明,后使用
- 变量都有其对应的作用域
不同:
二、类中方法的声明与使用
1.格式 修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){ 方法体代码 return 返回值; } 其中:
- 修饰符: public、缺省、private、protected等。
- 返回值类型:
没有返回值:void。 有返回值,声明出返回值的类型。与方法体中“return 返回值”搭配使用 - 方法名: 属于标识符,命名时遵循标识符命名规则和规范,“见名知意”
- 形参列表: 可以包含零个、一个或多个参数。多个参数时,中间用 “,” 隔开
- 返回值: 方法在执行完毕后返还给调用它的程序的数据
例如:
public class Person{
private int age;
public int getAge() {
return age;
}
public void setAge(int i)
{
age = i;
}
}
2.例题:利用面向对象的编程方法,设计类Circle计算圆的面积。
package com.qihang;
public class CircleTest {
public static void main(String[] args) {
Circle c1 = new Circle();
c1.radius = 2;
c1.findArea();
}
}
class Circle{
double radius;
public void findArea() {
double area = Math.PI*radius*radius;
System.out.println("面积为:"+area);
}
}
3.方法(函数)的重载(overload) 4.方法参数的值传递机制 形参:方法声明时的参数 实参:方法调用时实际传给形参的参数值 Java的实参值如何传入方法呢? Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
- 形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参
- 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参
5.递归函数 递归方法:一个方法体内调用它自身。
- 方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执 行无须循环控制。
- 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。
如:计算1-100之间所有自然数的和
public int sum(int num){
if(num == 1){
return 1;
}
else{
return num + sum(num - 1);
}
}
|