IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【java】java之面向对象(2)--类与对象、方法、成员变量与局部变量等 -> 正文阅读

[Java知识库]【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);
  } 
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:59:25  更:2022-02-14 21:02:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:32:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码