本帖最后由 Simp1e 于 2022-3-2 13:33 编辑
(1).类的定义:一类具有相同属性(静态特性)和特征(动态特性 方法)的事或物的集合
(2).对象的定义:是某个类中某一个具体的个体就叫该类的一个对象(实体)
(3).类和对象的学习要点 a.基础语法 如何定义一个类 如何通过类来创建一个对象 b.学习面向对象编程思想(一种程序的写法思路 类和接口) 面向过程式的编程思想 冰箱开门 把大象放进去 把冰箱门关上 睁眼->起床->穿衣->洗漱->出门->吃饭->上厕所->上课 睁眼->上课 睁眼->穿衣->起床->出门->上课->吃饭->洗漱 面向对象编程思想 把大象关冰箱 这个事情一共有几个类 [大象(进入XX里面) 冰箱(开门 关门)] 冰箱对象.开门() 冰箱对象.关门() 区块链->去中心化 思维方式要发生改变: 老子 《道德经》道可道 非常道, 人法地 地法天 天法道 道法自然 让我们的写完的程序更能还原世间万物运行过程 老太太[上交通工具 下交通工具]上公交车[进站 上车 下车 ] 去耦合化 James Gosling 程序员的十重楼[大哲] 李开复
(4).代码的实现a.定义类中的属性:[Java] 纯文本查看 复制代码 public class Person {//类
//属性(静态行为特征) 访问范围修饰符[public] 数据类型 变量名=值[默认值 String null]
public String name="张三";//字符串 null
public int age=30;//默认是0
public int height=170;
public int weight=100;
//方法(动态行为特征)
} b.创建对象[Java] 纯文本查看 复制代码 Person px = new Person();//类名 变量名 = new 类名(); c.属性的使用[Java] 纯文本查看 复制代码 //使用属性
public static void main(String[] args) {
//创建对象 想用属性必须创建对象
Person px = new Person();
//使用属性 取值 赋值
System.out.println(px.name);//对象.调用属性
String x = px.name;
System.out.println(x);
//输出weight
System.out.println(px.weight);
int y = px.weight;
System.out.println(y);
px.age = 80;
System.out.println(px.age);
} 深入灵魂的问题:为啥要用属性呢?代码上为了方便对变量进行统一的管理,程序设计上是为了让类具有某些特定的静态特征
b.方法方法的基本组成部分:
1.访问范围修饰符[public] 2.返回值 : 方法做完事情以后给别人的结果,并且这个结果其他程序继续使用 - 返回值可以有 也可以没有
3.方法名 任意:见名知意 驼峰法[如果该名字由多个单个单词描述,则该单词首字母小写,如果由多个单词组成,则第一个字母小写,其他单词首字母大写 chiFanHao]
4.参数列表 : 做事情的时候别人给我的 可以有 也可以没有白哥-类 给白哥买烟(A.属性 B.方法)public 返回值(A.有 B.没有) 买烟(参数 A.有 B.没有)[Java] 纯文本查看 复制代码 //无返回值 无参数方法 -- 方法定义
public void test(){
System.out.println("哎呀 我是一个无返回值 无参数滴方法");
}
//方法的调用和执行 - 调用式:在main中发生并且执行 注意 调用顺序决定执行顺序
Animal an = new Animal();
an.test();
//需要注意的地方
//1.语法
//2.调用和执行的顺序
//3.方法有啥用?方便于我们对复杂程序的封装使用,定义一次,以后使用起来非常的方便
//无返回值 有参数 -- 方法
//方法定义
public void testOne(int a,int b){
int sum = a/b;
System.out.println("除法结果:"+sum);
System.out.println("有了个值:"+a);
System.out.println("又有了个值:"+b);
}
//调用
Animal an = new Animal();
an.testOne(10,20);
注意:方法的参数 在方法定义时,不用考虑具体的值,可以认为a,b已经存在值了,但是调用时必须给具体值,否则会报错,参数的个数和类型没有具体要求和限制
//有返回值 无参数
public int testTwo(){
System.out.println("我是一个有返回值的方法");
return 1;
}
//调用
Animal an = new Animal();
int v = an.testTwo();
System.out.println(v);
//注意:有返回值的方法,必须在定义完方法以后,按照方法的要求添加适合的返回值。调用时,可以接受方法的返回值,但是接受时的数据类型必须和方法返回值的数据类型一致。也可以不接受
//有返回值 有参数
//定义
public int testThree(int a,int b){
System.out.println("我是有返回值 有参数的方法");
int sum = a + b;
return sum;
}
//调用
Animal an = new Animal();
int value = an.testThree(10,20);
System.out.println(value); (5).引用类型特性 基本数据类型和引用类型区别(6).使用数组来充当属性,参数和返回值 a.数组当属性 (a). 数组充当属性时,如果不赋值,它会有默认值为null (b).数组属性的静态初始化形式有两种方式 在属性声明时可以直接使用静态初始化方式 [Java] 纯文本查看 复制代码 public int[] values = {1,2,3};//默认值 - 初始化 在属性使用时那么只能以完成的静态初始化手段对其进行赋值[Java] 纯文本查看 复制代码 public static void main(String[] args) {
Person p = new Person();
System.out.println(p.values);
//静态初始化对属性赋值
p.values = new int[]{1,2,3};
//动态初始化
} (c).数组属性动态初始化1.属性使用时初始化[Java] 纯文本查看 复制代码 p.values = new int[3];
p.values[0] = 1;
p.values[1] = 2;
p.values[2] = 3; 2.声明时动态初始化[Java] 纯文本查看 复制代码 //定义属性时对数组进行初始化
public int[] values = new int[3];//默认值 - 初始化
//在后续使用时对数组元素赋值
Person p = new Person();
p.values[0] = 1;
p.values[1] = 2;
p.values[2] = 3;
for (int a : p.values){
System.out.println(a);
}
//也可以在使用时完成动态初始化的全部流程
p.values = new int[3];
p.values[0] = 1;
p.values[1] = 2;
p.values[2] = 3; b.数组作为方法的参数[Java] 纯文本查看 复制代码 public class ArrayUtils {
//数组作为方法的参数
//找到任意数组的中的最大值
//是否需要返回值 是否需要参数
public int findMax(int[] values){
int max = values[0];
for (int i = 1;i < values.length;i++){
if (values[i] > max){
max = values[i];
}
}
return max;
}
public static void main(String[] args) {
ArrayUtils au = new ArrayUtils();
int m = au.findMax(new int[]{5,1,3,1,6,8,10,2});
System.out.println(m);
}
} c.数组当返回值 [Java] 纯文本查看 复制代码 public int[] heBing(int[] v1,int[] v2){
int[] v = new int[v1.length+v2.length];
//赋值
for (int i = 0;i < v1.length;i++){
v[i] = v1[i];
}
for (int i = 0;i < v2.length;i++){
v[v1.length+i] = v2[i];
}
return v;
} |