【java】java之面向对象(2)--类与对象、方法、成员变量与局部变量等

一、类和对象

类(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() { //声明方法(函数)getAge()
return age; 
}
public void setAge(int i) //声明方法setAge(int i)
 {
     age = i; //将参数i的值赋给类的成员变量age
 } 
 }

2.例题:利用面向对象的编程方法,设计类Circle计算圆的面积。

package com.qihang;
//测试类
public class CircleTest {
	public static void main(String[] args) {
		Circle c1 = new Circle();
		c1.radius = 2;
//		对应方法1
//		double area = c1.findArea();
//		System.out.println(area);
		
//		对应方法2
        c1.findArea();	
	}
}
class Circle{
	//属性
	double radius;
	//求圆面积方法
	
//	方法1
//	public double findArea() {
//		double area = Math.PI*radius*radius;//或直接写3.14
//		return area;	
//	}
	
//	方法2
	public void findArea() {
	double area = Math.PI*radius*radius;//或直接写3.14
	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);
  } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值