• JAVA——类与对象


    类与对象

    为什么会有类与对象?

    • java 设计者 引入 类与对象(OOP) ,根本原因就是现有的技术,不能完美的解决新的新的需求.

    快速入门

    package Object_Practice;
    
    //		使用面向对象的方式来解决问题
    public class Object01 {
    	public static void main(String[] args) {
    //		使用oop来解决这个问题
    //		1.实例化一只猫[创建一个对象]
    //		2.cat1(cat2) 就是一个对象
    		Cat cat1 = new Cat();
    		cat1.name = "小白";
    		cat1.age = 3;
    		cat1.color = "白色";
    
    		Cat cat2 = new Cat();
    		cat2.name = "小花";
    		cat2.age = 100;
    		cat2.color = "花色";
    
    //		如何访问对象的属性呐
    		System.out.println("====第一只猫信息====\n" +"姓名:" + cat1.name + "\n" 
    									   +"年龄:" + cat1.age +"\n" 
    									   +"颜色:" + cat1.color);
    							
    		System.out.println("====第二只猫信息====\n" +"姓名:" + cat2.name + "\n" 
    				   +"年龄:" + cat2.age +"\n" 
    				   +"颜色:" + cat2.color);
    	}
    
    }
    
    class Cat {
    	// 属性
    	String name;// 名字
    	int age;// 年龄
    	String color;// 颜色
    
    	// 行为
    }
    

    总结:

    1. 类是抽象的,概念的,代表一类事物,不如人,猫,它是个数据类型
    2. 对象是具体的,实际的,代表一个具体的事物,即实例
    3. 类是对象的模板,对象是类的一个个个体,对应一个实例

    一、类

    概念:类主要是由它的属性行为组成的

    image-20220109215537092

    image-20220109215634396

    二、对象

    概念:对象是类的具体实例

    2.1对象的内存布局形式

    image-20220111110515175

    总结:

    1. 会把类中字符串放到常量池中
    2. 基本数据类型放在堆中
    3. 创建对象时,会加载猫类的信息,包括属性行为

    三、类与对象

    从概念或叫法上看:

    1. 成员变量 = 属性 = field(字段) (即 成员变量是用来表示属性的,授课中,统一叫 属性)

    2. 属性是类的一个组成部分,一般是基本数据类型,也可以是引用数据类型(对象,数组)

    class Car{
    	//属性/成员变量/field(字段)
    	String name;
    	double price;
    	String color;
    	String [] master;
    	//可以是基本数据类型,也可以是引用数据类型
    }
    

    3.1如何创建

    1. 先声明再创建

      Cat cat;
      cat = new Cat();
      
    2. 直接创建

      Cat cat = new Cat();
      

    3.2如何访问属性

    基本语法:对象名.属性名

    3.2类与对象的分配机制

    public static void main(String[] args) {
    			Person p1 = new Person();
    			//p1指向 new Person 开辟出来的空间,包括它分配出来的数据
    			//p1 称为对象引用/对象名,new Person 才是真正的对象
    			p1.name = "杨文龙";
    			p1.age = 21;
    			p1.sal = 86;
    			p1.isPass = true;
    			//对象的属性默认值,遵守数组的规则:
    			// int 0,short 0, byte 0, long 0, float 0.0,
    			//double 0.0,char \u0000, boolean false,String NULL
    			System.out.println("这个人的信息");
    			System.out.println("姓名:" + p1.name +"\n"
    							   + "年龄:" + p1.age + "\n"
    							   + "分数:" + p1.sal + "\n"
    							   + "是否通过:" + p1.isPass + "\n" );
    			Person p2 = p1;
    			System.out.println("年龄:" + p1.age);//输出多少
    		}
    

    image-20220111145256546

    3.2.1Java内存的结构分析

    1. 栈:一般存放基本数据类型(局部变量)
    2. 堆:存放对象(Cat cat,数组等)
    3. 方法区: 常量池(常量,比如字符串),类加载信息

    例如

    Person p1 = new Person();
    p.name = "jack";
    p.age = 10;
    
    1. 先在方法区加载类信息( 对象的 属性和 行为 ,只会加载一次)
    2. 在堆中开辟内存空间,进行默认初始化,
    3. 把地址赋给p1,p1指向分配出来的空间(对象)
    4. 进行指定初始化

    注意事项和细节

    1. 属性的定义语法同变量,示例:访问修饰符 属性类型 属性

      • 访问修饰符:用来控制属性的范围范围
        • public
        • protected
        • 默认
        • private
    2. 属性的定义类型可以为任意类型,包含基本类型或引用类型

    3. 属性如果不赋值,有默认值,规则和数组一致

      • 具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000, boolean false,String
    package Object_Practice;
    
    public class PropertiesDetail {
    		public static void main(String[] args) {
    			Person p1 = new Person();
    			//p1指向 new Person 开辟出来的空间,包括它分配出来的数据
    			//p1 称为对象引用/对象名,new Person 才是真正的对象
    		
    			//对象的属性默认值,遵守数组的规则:
    			// int 0,short 0, byte 0, long 0, float 0.0,
    			//double 0.0,char \u0000, boolean false,String NULL
    			System.out.println("这个人的信息");
    			System.out.println("姓名:" + p1.name +"\n"
    							   + "年龄:" + p1.age + "\n"
    							   + "分数:" + p1.sal + "\n"
    							   + "是否通过:" + p1.isPass + "\n" );
    		}
    }
    
    class Person{
    	int age;
    	String name;
    	double sal;
    	boolean isPass;
    }
    
  • 相关阅读:
    mybatis返回map类型数据空值字段不显示(三种解决方法)
    linux各种资源查看
    ssh代理
    python 自定义ping编写
    python 备忘(协程,多进程)
    python 控制电源模块for循环写法
    XPath 语法
    python 自定义去掉特殊字符串
    ssh证书登陆vpc/并且反向代理
    cmder设置
  • 原文地址:https://www.cnblogs.com/DL50/p/15788495.html
Copyright © 2020-2023  润新知