Day9
面向对象
含义:
- 把众多的形同属性和功能的事归为一类(对象->类)
- 类是有一个模板,刻画出对象应该有怎么样的属性名和功能(类->对象)
- 编写顺序:先写类,再写对象
- 类里只有属性和方法(功能)
- 对象:现实生活中的实体
- 类(class)虚拟的概念
public class Test01 {
public static void main(String[] args) {
//创建对象
Person p = new Person();
//设置属性
p.name = "苏楠";
p.sex = '女';
p.age = 18;
//获取属性
System.out.println(p.name);
System.out.println(p.sex);
System.out.println(p.age);
//调用方法
p.eat();
p.sleep();
}
}
person 类
package com.dream.Test01;
//人类
public class Person {
//属性:成员属性
String name;
char sex;
int age;
//成员方法
public void eat(){
System.out.println(this.name +"吃饭饭");
}
public void sleep(){
System.out.println(this.name + "睡觉觉");
}
//静态方法
public static void method(){
System.out.println("静态方法");
}
}
以下是底层实现图
内存知识点梳理
- 调用方法就在栈内存中开辟空间
- 创建对象
(xxxx ? = new xxxx())
就在堆内存中开辟空间 - 字面值常量在常量池中开辟空间
- 方法调用完,垃圾回收器会立刻回收掉在栈中开辟的空间
- 方法区的字节码文件(xxx.class)只会加载一次
成员变量
成员属性-成员变量
- 必须使用对象调用
- 位置:在类里,方法外
成员方法:
必须使用对象调用;
局部变量
方法里的变量,系统不会给默认值;
静态方法
用static修饰的方法,直接用类名调用即可如(Arrays.sort)
成员变量 vs 局部变量
- 成员变量: 类里方法外的变量,创建对象时,系统会有默认值
整数类型:0
浮点类型:0.0
字符类型:’ ’
布尔类型:false
引用类型:null
如下
- private String name;
private int age;
private char sex;
private String studentnun;
- 局部变量:方法里的变量,系统不会给默认值
附上图:
重载:
作用:一个类有多个相同功能的方法,就可以使用重载
条件:
- 在同一个类里
- 方法名相同
- 参数列表的个数或者类型不一致
- 与返回值无关
构造方法:
- 特征:与类名(class)同名并且没有返回项
- 注意:当一个类没有其他或者有参构造方法的时候,系统会默认实现无参构造方.
- 存在的意义: new对项时,要使用构造方法
- 好处:创建对象的时候,不用重复写代码## prvivate:私有化
例子: 有参构造方法:
public fengzhuag() {
}
public fengzhuag(String name, int age, char sex, String studentnun) {
this.name = name;
this.age = age;
this.sex = sex;
this.studentnun = studentnun;
}
private:私有化
修饰属性:不能让外界调用
修饰方法 :不能让外界调用
封装
- 步骤1:私有化属性
- 步骤2:给属性添加方法get\set的方法
- 好处 1,保护数据。2,可以做其他逻辑判断;
- 经验:只要是属性,直接封装
例子代码:
class fengzhuag{
private String name;
private int age;
private char sex;
private String studentnun;
public fengzhuag() {
}
public fengzhuag(String name, int age, char sex, String studentnun) {
this.name = name;
this.age = age;
this.sex = sex;
this.studentnun = studentnun;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
this:本对象
this.属性(this 调用方法(依据参数类型去自动调用))
this注意:this代表本对象,哪个对象调用此方法,方法中的this就代表哪个对象
分包
基本作用:防止类的重名
项目中的作用:归类(把多个不同类归到一个包下)