一只粉红色的大象
1、调用对象中的属性
1. 类名 对象名 = new 类名();
2. 对象名.属性名; 属性:该事物的特征,姓名、年龄等
3. 对象名.方法名(实际参数); 行为:该事物具体能做的事 方法
类 : 属性, 行为
*
* 属性: 事物的特征 --> 姓名, 年龄
* 在Java中属性使用[成员变量]进行表示
* 成员变量: 跟之前定义变量的格式一致, 只不过位置发生了改变, 类中方法外
*
* 行为: 该事物能做的功能 -> 吃饭, 学习
* 在Java中行为使用[成员方法]进行表示
* 成员方法: 跟之前定义方法的格式一致, 只不过去掉了static关键字
*
* 类 :
* 测试类 -> 带有main方法的类
* 实体类 -> Student (描述事物, 封装数据的)
2、在一次程序执行过程中创建了多个对象,.class文件只加载一次
垃圾回收机制,当一个对象的地址值没有被任何一个引用记录住的时候,那么这个对象就会被清理掉,比如我们可以手动的设置引用为null,如p=null。以此来达到对p指引对象内存空间的清理,从而释放空间。
3、成员变量 和局部变量的区别(注意有个main方法,会有干扰)
A:位置不同
成员变量: 类中方法外
局部变量: 方法中或者是方法的声明上(形参)
B:初始化值不同
成员变量: 有默认初始化值
局部变量: 没有默认初始化值, 使用之前必须赋值才能使用
C:生命周期不同
成员变量: 随着对象的创建而存在, 随着对象消失而消失
局部变量: 随着方法的调用而存在, 随着方法的弹栈而消失
D:内存位置不同
成员变量: 堆内存
局部变量: 栈内存
E:作用域不同(编写代码)
局部变量: 仅在方法所在的大括号中有效
main(){
int num = 10;
for(int i = 1; i <= 10; i++){
System.out.println(i); // i只能在for的大括号中访问
}
}
成员变量: 在整个类当中
4、private修饰的成员,不管是变量还是方法,都只能在本类当中进行访问
5、 封装仅仅是一种思想, 并非是一个技术点。封装的目的,隐藏实现的细节,仅仅对外暴露公共的访问方式。—1. 将代码抽取到方法中, 这是对代码的一种封装—2. 将数据抽取到一个类当中, 这是对数据进行的封装(比如对数据库中每一行的内容我们封装为一个对象来存储,这个对象中有很多的成员变量表示每一列)
6、this代表当前对象的引用,谁来调用,就代表谁
public void setName(String name){
// 问题: 局部变量和成员变量出现了重名
// Java才用的是就近原则
this.name = name;}
7、构造方法,用于对象属性的初始化操作,也就是成员变量的初始化。构造方法是创建对象时一定会执行的方法,那么我们可以利用一定会执行来做某些事情,比如打印一些东西。
1. 方法名与类名相同, 大小写也要一致
2. 没有返回值类型, 连void都没有
3. 没有具体的返回值,只能使用return结束
其实类的底层就是方法,因为都需要考有参或者无参构造方法来完成初始化(个人理解_)
// 空参构造: Alt + shift + s + c
// 有参构造:Alt + shift + s + o ------(eclips中的快捷键)
// setXxx\getXxx : Alt + shift + s + r
8、面向对象是面向过程演变而来的,但是一步一步的步骤,总是有人来做的,就比如求两数的最大值,我们调用一个方法就能完成,但是这个方法总是有人去完成,他就是面向过程去做的
9、创建对象的引用,都是实例对象的地址
10、类中的成员方法没有static修饰,是因为修饰了,那么成员变量也必须static修饰,否则方法没有权限访问成员变量值
11、一个java文件中,可以编写多个class类,但是只能有一个class类被public所修饰,因为,public的作用就是保证名称的统计,我们无法让两个class类都和名称保持一致
12、被private修饰的成员,只能在本类中被使用!!我们用private修饰类中成员变量,并用set、get方法,就可以在调用此方法用成员变量的时候,对成员变量进行限制(比如不能为负数等),私有的目的是为了过滤掉错误的数据。私有后我们设置了公共的set、get方法来访问
package com.heima.mprivate;
public class TestStudent {
public static void main(String[] args) {
Student s = new Student();
s.name = "张三";
s.setAge(-23);
System.out.println(s.name);
System.out.println(s.getAge());
}
}
class Student {
String name;
private int age; // 特点: 只能在本类中进行访问
// 目的: 为了过滤掉错误的数据
// 现象: 如果只做私有, 正确的数据也无法进来
// 解决: 提供age成员变量的公共访问方式, setAge, getAge
public void setAge(int a){
if(a >= 0 && a <= 200){
// 合法年龄, 正常赋值
age = a;
}else{
// 非法年龄, 给出提示,也可throw爆出异常!!
System.out.println("您的年龄输入有误");
}
}
public int getAge(){
return age;
}
}
13、回想一下内部类,作用是什么?
14、this的作用:用于区分局部变量和成员变量的重名问题,this代表当前对象的引用(地址), 谁来调用我, 我就代表谁,就是哪个对象的地址(对象的地址引用)。
15、如果Java中, 局部变量和成员变量出现了重名的问题, 将会采用就近原则。this作用: 用于[区分]局部变量和成员变量的重名问题,(this.): 调用本类成员变量的一种标识。
16、遇到return就会结束方法!!
17、多想一下类和方法的关系,成员变量成员方法,空参有参构造的使用