• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Jay_zhen
博客园    首页    新随笔    联系   管理    订阅  订阅
类与对象

面向对象:
    把所有的功能拆分 以使用者的身份去配置
    创建对象(唯一性(包含的数据-- 以对象为单位)),开销内存
    编程方式使得每一个类造一堆东西但都只做一件事
    强调一件事情的“主角”是谁,所有和他相关的内容都封装在一起。就好比纪传体,一个人物单独封装成一个章节。这个封装里面,主角(对象)非常清晰,一切事情都是围绕它的。如果没有清晰的主角,那就是面向过程的

面向过程: 逻辑 步骤特别严谨,上下文代码比较贴好
      解决特定的问题 解密 数学计算 系统启动加载

一、类与对象 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我是一个快乐的人!");
	}
	
}

posted on 2021-12-26 16:49  Jay_zhen  阅读(34)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3