面向对象:
把所有的功能拆分 以使用者的身份去配置
创建对象(唯一性(包含的数据-- 以对象为单位)),开销内存
编程方式使得每一个类造一堆东西但都只做一件事
强调一件事情的“主角”是谁,所有和他相关的内容都封装在一起。就好比纪传体,一个人物单独封装成一个章节。这个封装里面,主角(对象)非常清晰,一切事情都是围绕它的。如果没有清晰的主角,那就是面向过程的
面向过程: 逻辑 步骤特别严谨,上下文代码比较贴好
解决特定的问题 解密 数学计算 系统启动加载
一、类与对象 oop
类: 具有相同的、相似的属性、特征、行为方式、功能的一类事物的描述 人类
升级版struct,数据类型的集合,实际上并没定义任何数据,但他规定所有此类基本框架。有public外部可以访问修改,private外部只能调用,protect三种成员
Field 属性: 人特征:学号、性别、姓名、年龄、籍贯、爱好、身高...
电脑:品牌、型号、电池、内存、显卡、颜色、...
Method 方法: 人行为:读书、吃饭、睡觉、上课、喝水、走路、打球...
电脑行为:计算、显示、存储、开机、关机...
对象: 存中存储的对象的数据 和 代码指令
具体的事物 某个人 某个同学 某一件事
创建类:class Person{}
创建对象:new Person() new+构造器 构造器可以初始化对象
类型名 对象名 = new 类名();
Object obj = new Object(); //分配内存
obj : --> 只是个名字,对象的"引用"
对象: 具体的内存空间,存储对象的数据 功能指令
程序:解决问题
本身:0 1 一些文件 代码 资源 配置文件
状态 :运行中的程序 -- 才能解决问题
进程:只有进程中才有对象
代码: 计算机指令 进程可以使得这些指令执行
-- 调度计算机资源
package classobject.lzq01.memory;
/**
* @author Liuzhen
* @create 2021-11
*/
public class PersonChange {
//程序入口,每个类不一定都要有
public static void main(String args[]){
PersonChange cobj = new PersonChange();
Person pobj = new Person();
pobj.age = 5;
System.out.println("主函数修改之前的age是"+ pobj.age);//5
cobj.change(pobj);
System.out.println("主函数修改之后的age是"+ pobj.age);
}
//方法或者函数
public static void change(Person pobj){
//pobj = new Person(); // new情况下主函数中参数的值不受影响
System.out.println("change函数修改之前的age是"+ pobj.age);//4
pobj.age = 4;
System.out.println("change函数修改之后的age是"+ pobj.age);
}
}
//内部类
class Person{
//属性
int age;
String name;
//构造器 必须先有空参的,再重载
Person(){
};
Person(int age,String name){
age = 23;
name = "LiuZhen";
}
}
{
name = "LiuZhen";
isMarried = false;
}
代码块:初始化类、对象
静态代码块内:随着类的加载而执行,而且只一次,只能调用静态的属性、静态的方法,不能调用非静态的结构
非静态代码块:随着对象的创建而执行多次。对象的属性等进行初始化。
点击查看静态代码块测试
public class BlockTest {
public static void main(String[] args) {
System.out.println(Person.desc); //static desc我是一个爱学习的人
System.out.println();
Person p1 = new Person(); //hello, block object - 1 eat吃饭 Person [name=null, age=1]
System.out.println( p1.desc ); //desc我是一个爱学习的人
System.out.println();
Person p2 = new Person(); //hello, block object - 1 eat吃饭 Person [name=null, age=1]
System.out.println(p2.desc); //desc我是一个爱学习的人
}
}
class Person{
//属性
String name;
int age;
static String desc = "我是人 初始属性";
//构造器
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
//非static的代码块
{
System.out.println("hello, block object - 1");
//调用非静态结构
age = 1;
eat();
desc = "desc我是一个爱学习的人";
System.out.println( toString() );
//调用静态结构
//desc = "我是一个爱学习的人1+2 ";
//info();
}
//static的代码块
static{
//System.out.println("hello,static block-1");
//调用静态结构
desc = "static desc我是一个爱学习的人";
//不可以调用非静态结构
// eat();
// name = "Tom";
}
//方法
public void eat(){
System.out.println("eat吃饭");
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public static void info(){
System.out.println("static info我是一个快乐的人!");
}
}

浙公网安备 33010602011771号