• 初识面相对象深入理解、构造方法--学习JavaEE的day12


    day12

    一、初识面相对象深入理解

    需求:

    创建人类的对象,并操作对象

    分析:

    人类 - Person

    属性:name、sex、age

    方法:eat、sleep

    场景:创建多个对象,去操作对象

    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("静态方法");
    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    //测试类:该类中有main方法,测试我们写好的代码
    public class Test01 {
    	public static void main(String[] args) {
    		
    	Person p1 = new Person();
    	Person p2 = new Person();
    	
    	p1.name = "奇男子";//一个一个赋值
    	p1.sex = '男';
    	p1.age = 22;
    	
    	p2.name = "星宫一花";
    	p2.sex = '女';
    	p2.age = 24;
    	
    	p1.eat();
    	p1.sleep();
    	
    	p2.eat();
    	p2.sleep();
    	
    	Person.method();
    	
    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    面向对象深入理解图

    面向对象内存图
    面向对象内存图

    小结
    1.class文件只加载一次

    ​ 2.class文件中包含了该类所有的信息

    ​ 3.new对象会在堆中开辟空间,存放成员变量

    ​ 4.成员变量系统会赋默认值

    ​ 5.每个对象独享一份成员变量

    ​ 6.方法中的this表示调用该方法的对象

    ​ 7.成员方法可以使用this
    ​ 8.静态方法使用类名调用,所以方法内不能使用this

    二、构造方法

    前言 - 创建对象的语法:类型 引用 = new 构造方法;

    分类:

    无参构造和有参构造

    含义:

    与类名相同,且没有返回项的方法

    作用:

    ​ 1.和new关键字在一起表示创建对象

    ​ 2.初始化数据

    注意:

    ​ 1.创建对象的过程Person p = new Person();,也叫做实例化

    ​ 2.当类中没有有参构造时,系统会默认实现无参构造;反之不会默认实现

    ​ 3.构造方法可以重载的

    有参构造好处:创建对象时,把数据赋值给该对象

    经验:

    类中编写了有参构造,我们记得把无参构造加上

    需求:创建人类,操作对象

    public class Person {	
    
    //成员变量
    String name;
    char sex;
    int age;
    
    //构造方法 - 无参构造
    public Person(){
    	System.out.println("无参构造");
    	
    	//初始化数据
    	this.name = "默认值";//不写this也是默认使用用this
    	this.sex = '男';
    	this.age = 0;
    }
    
    //构造方法 - 有参构造
    public Person(String name,char sex,int age){
    	
    	System.out.println("有参构造");
    	
    	this.name = name;//不写this会报错,将传进来的参数赋值给对象的属性
    	this.sex = sex;
    	this.age = age;
    }
    
    //成员方法
    public void eat(){
    	System.out.println(this.name + "吃饭饭");
    }
    
    //成员方法
    public void sleep(){
    	System.out.println(this.name + "睡觉觉");
    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    public class Test01 {
    	public static void main(String[] args) {
    
    /*		//无参
        Person p = new Person();
    
    	p.name = "奇男子";
    	p.sex = '男';
    	p.age = 22;*/
    	
    	//类型 引用 = new 构造方法;
    	Person p = new Person("奇男子", '男', 22);//有参构造方法,new对象时给属性赋值
    	
    	System.out.println(p.name);
    	System.out.println(p.sex);
    	System.out.println(p.age);
    	
    	p.eat();
    	p.sleep();
    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    无参构造:new对象时,成员变量系统会赋默认值,之后会调用无参构造(可以进行初始化数据,测试类中一个一个给属性赋值),构造方法执行完,对象创建成功;

    有参构造:new对象时,成员变量系统会赋默认值,之后会调用无参构造,再调用有参构造(可以进行初始化数据,将传进来的参数赋值给对象的属性),构造方法执行完,对象创建成功;

    无参构造、有参构造内存图

    无参构造内存图
    无参构造内存图
    有参构造内存图
    有参构造内存图

    总结:

    1.练习题 – 编写动物园类

    2.初始面向对象深入理解

    ​ class文件只加载一次

    ​ 每个对象的成员变量独享一份,对象存成员变量

    ​ 方法要调用时才在栈内存开辟空间

    3.构造方法 – 重要

    4.this – 哪个对象调用该方法,该方法中的this就表示该对象

  • 相关阅读:
    Linux学习-52-Linux工作管理-后台命令运行管理
    腾讯测试开发复试<硬核面经>
    送分题,ArrayList 的扩容机制了解吗?
    Spring的IOC原理
    更深层的去理解负载均衡
    镉系量子点 CdSe/ZnS QDs,硒化镉/硫化锌量子点(油溶性)
    三大数据库 sequence 之华山论剑 (下篇)
    Dubbo基本用法-Dubbo Provider配置
    【MySQL篇】第一篇——数据库基础
    上海理工大学计算机考研资料汇总
  • 原文地址:https://blog.csdn.net/gangain/article/details/136374307