JavaSE(6) - 面向对象-1
p82 类和对象
- 类 (*** 设计图*** ) : 是对象共同特征的描述;
- 对象 : 是真实存在的具体东西.
在java中, 必须先设计类, 才能获得对象.
- 如何得到对象
public class 类名{
1.成员变量(代表属性的,一般是名词)
2.成员方法(代表行为的,一般是动词)
}
类名 对象名 = new 类名();
- 拿到对象后能做什么?
对象.成员变量;
对象.成员方法(...)
类的定义
-
用来描述一类事物的类, 专业叫做 : Javabean类. 在Javabean类中, 是不写main方法的.
-
在以前, 编写main方法的类, 叫做测试类. 我们可以在测试类中创建javabean类的对象并进行赋值调用.
类调用的补充注意事项
- 类的首字母建议大写, 需要见名知意, 大驼峰模式. 并不能用关键字.
- 一个java文件中可以定义多个class类, 且只能一个类是public修饰, 而且public修饰的类名必须成为代码文件名.实际开发中建议还是一个文件定义一个class类.
- 成员变量的完整定义格式是 : 修饰符 数据类型 变量名 = 初始化值;,一般无需指定初始化值, 存在默认值.
小技巧 : 按住alt+左键 或者 滚轮+左键竖着多选
p83 封装
- 什么是封装
- 告诉我们, 任何正确设计对象的属性和方法.
- 原则 : 对象代表什么, 就得封装对应的数据, 并提供数据对应的行为.
- 理解封装思想的好处
- 让编程变得简单, 有生命事, 找对象, 调用方法就行.
- 降低我们的学习成本, 可以少学,少记,或者压根不用学,不用记对象有哪些方法, 有需要的时候去找就行.
private关键字
-
private关键字是一个权限修饰符
-
可以修饰成员(成员变量和成员方法)
-
被private修饰的成员只能在本类中才能访问
-
针对private修饰的成员变量, 如果需要被其它类使用, 得提供相应的操作
-
提供" setXxx(参数)" 方法, 给成员变量赋值, 方法用public修饰
-
提供" getXxx(参数)" 方法, 获取成员变量的值, 方法用public修饰
p84 就近原则和this关键字
-
就近原则 :
- System.out.println(age); - 先在局部找(方法内部),如果找不到就到类中(成员位置)找
- System.out.println(this.age); - 不会到局部去找,只会在类中(成员位置)去找
-
this的作用
- 可以区别成员变量和局部变量
p85 构造方法
作用 : 在创建对象的时候,由虚拟机自动调用,给成员变量初始化(赋值)
格式 :
- 方法名与类名相同, 大小写也要一致
- 没有返回值类型, 连void都没有
- 没有具体的返回值(不能由return带回结果数据)
构造方法有两种:
- 无参数构造方法 : 初始化对象时, 成员变量的数据均采用默认值
- 有参数构造方法 : 初始化对象时, 同时可以为对象进行赋值.
执行时机 :
- 创建对象时由虚拟机调用, 不能手动调用构造方法
- 每创建一次对象, 就会调用一次构造方法
构造方法的注意事项
-
构造方法的定义
- 如果没有定义的构造方法, 系统将给出一个默认的无参数的构造方法
- 如果定义了构造方法, 系统将不再提供默认的构造方法
-
构造方法的重载
- 带参构造方法和无参数构造方法, 两者方法名相同, 但是参数不同,这叫做构造方法的重载.
-
推荐的使用方法
- 无论是否使用, 都手动书写无参构造方法, 和带全部参数的构造方法.
package Basic.Constructor;
//构造方法和get/set方法的写法
public class student {
private String name;
private int age;
public student(){}//空参构造方法
//带参构造方法
public student(String name,int age){
this.name = name;
this.age = age;
}
//
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void study(){
System.out.println("study!");
}
public void eat(){
System.out.println("eat!");
}
}
//==========在测试类中定义===============================
package Basic.Constructor;
public class Demo {
public static void main(String[] args) {
//根据构造方法的参数给对象赋值
student s = new student("George",8);
// s.setAge(10);//用set方法给对象赋值
// s.setName("George");
//调用属性和方法
System.out.print(s.getName()+" is "+s.getAge()+", He likes to ");
s.study();
}
}
p86 标准的JavaBean类
标准的JavaBean类
-
类名需要见名知意,大驼峰命名
-
成员变量使用private修饰
-
提供至少两个构造方法
- 无参构造方法
- 带全部参数的构造方法
-
成员方法
- 提供每一个成员变量对应的 setXxx() / getXxx()
- 如果还有其它行为, 也需要写上
自动生成构造方法,get / set 方法
快捷键 : alt + insert , alt + Fn + insert 在窗口中 CTRL + A 或者 shift + 左键 全选
**插件PTG 可以一秒生成标准JavaBean **
p87 对象的内存图
创建一个对象并加载的内存图
student s = new student();
- 加载class文件(student类的字节码文件)到方法区
- 声明局部变量(student s)
- 在堆内存中开辟一个空间(new关键字创建对象)
- 初始化(默认初始化) (显示初始化) (构造方法初始化)
- 把这个空间的地址值赋值给局部变量(s)
两个对象的内存图(创建两个空间)
如果出现两个new就会在堆内存中开辟两个内存空间,并且是独立,互不影响的.
两个引用指向同一个对象的内存图
只要有一个变量对对象发生了改变, 其它对象访问时也是改变了的.
p88 基本数据类型和引用数据类型
基本数据类型就是在本身的空间里的数据(加载方法的栈空间).
特点: 赋值给其它变量, 赋的是真实的值.
引用数据类型中存的是其它空间的地址值, "引用,引用" 就是拿别的空间里的数据来使用(指堆内存空间).
特点: 赋值给其它变量, 赋的是地址值(指向其它空间的地址).
p89 this的内存原理
this的作用 : 区分局部变量和成员变量.
this的本质 : 所在方法调用者的地址值.
p90 成员和局部
成员变量 : 类中方法外的变量
局部变量: 方法中的变量或者方法声明中(方法形参)
区别 成员变量 局部变量
初始化 有默认初始化值 没有,使用前要赋值
内存位置 堆的对象内存 栈的方法内存
生命周期 随对象的创建和消失 随着方法的调用和结束
作用域 这个类中有效 当前方法中有效
标签:变量,构造方法,对象,成员,面向对象,JavaSE,方法,public From: https://www.cnblogs.com/lg369/p/17704957.html