一. 简介
面向对象原则:
1.2 面向对象内容概述:
类和对象是面向对象的核心概念!
类是对一类事物的描述,是抽象的,概念上的定义
对象是实际存在的该类食物的每个个体,因而也称为实例
可以理解为:类=抽象概念的人 对象=实实在在的某个人
面向对象程序设计的重点是类的设计
类的设计,其实就是类的成员的设计
1.3 类的成员
java中用类class来描述事物: 模具和产品的概念,常见的类的成员有:
属性: 对应类中的成员变量
行为: 对应类中的成员方法
1.4 内存解析
Person类的成员变量以及方法加载到方法区->新建了p1对象,在栈里指向了内存地址,并且在队里开辟了空间,里边有此对象的方法和属性,后续将p1的name属性添加了“马云”,然后创建了新对象p2,并且开辟了内存空间,但未赋值。
1.4.1 代码分析
1.5 属性 field
(alt + insert :创建所有)
1.6 方法 method
1.7 方法的重载
必须参数要不同,1比2 :参数个数不同 2比3: 参数类型不同
调用时要根据方法参数列表的不同来区别。
1.8 可变参数
函数是指定义在类中的一段可以独立运行的小程序,如方法,构造器等
java可变参数是指在调用方法时传入不定长度的参数,本质上是基于数组实现的
!!
定义在函数里面的是实参。例如 int a=0; a是实参
声明定义函数的时候是形参 例如func(int b) b就是形参
在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。
运行结果:
1.9 参数传递
方法,必须由其所在类或对象调用才有意义
定义在函数里面的是实参。例如 int a=0; a是实参
声明定义函数的时候是形参 例如func(int b) b就是形参
java里方法的传递只有一种:值传递,就是将实际参数值的副本传入方法内,
本身不受影响。
1.9.1 基本数据类型参数传递:
将实际参数值的副本传入方法内,
本身不受影响。
public static void main(String[] args) {
int x = 5;
System.out.println("修改之前x = " + x);// 5
// x是实参
change(x);
System.out.println("修改之后x = " + x);// 5
}
public static void change(int x) {
System.out.println("change:修改之前x = " + x);
x = 3;
System.out.println("change:修改之后x = " + x);
}
//基本数据类型参数传递
1.9.2 引用类型参数传递
Java中数据类型分两类,基本数据类型和引用数据类型
1.基本数据类型:String.int.double等基本数据类型
2.引用数据类型:数组、接口、类等。
public static void main(String[] args) {
int[] arr = new int[]{1,2,3};
test(arr);
System.out.println(Arrays.toString(arr));
static void test(int[]arr){
arr[2] = 100;
}
}
// 输出结果为{1,2,100}
1.9.3 小案例(代码分析)
public class Transfer2 {
public static void main(String[] args) {
int m = 10;
int n = 20;
System.out.println("m = " + m + ", n = " + n);
Transfer2 test = new Transfer2();
test.swap(m, n);
System.out.println("m = " + m + ", n = " + n);
}
public void swap(int m,int n){
int temp = m ;
m = n;
n = temp;
}
}
//运行结果值未变
静态属性调用方法必须要创建对象才可以!!!
运行前:m = 20 n = 10 ;运行后: m = 10 n = 21;引用类型参数会影响原有值,也是和基本类型的区别。
2.0 递归方法
public static void main(String[] args) {
// 例1:计算1-100之间所有自然数的和
// 方式一:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
//运行结果:打印1到100所有自然数的和。
3. 实例化和对象的区别
实例化指向创建对象之后,而对象更像是广义的概念:代码示例