Day04-类和对象创建/构造器/内存分析/小结

类与对象的创建

类与对象的关系

package com.oop.demo2;

//学生类
//类相对于一个模板,对象是一个实例
//学生类是学生的属性(姓名)方法(能干什么)
//创建的学生对象是一个具体的学生(有头有脸)
public class Student {

    //属性:字段
    String name;//null
    int age;//0

    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }


}
package com.oop;


//一个项目应该只存一个main方法
//一般习惯分屏放在右边,右键点击类名.java然后选择Split right
public class Application {
    public static void main(String[] args) {

        //类:抽象的,实例化
        //类实例化后会返回一个具体的对象!
        //student对象就是一个Student类的具体实例
        //Student student = new Student();
        Student xiaoming = new Student();
        Student xh = new Student();

        xiaoming.name = "小明";
        xiaoming.age = 3;

        System.out.println(xiaoming.name);
        System.out.println(xiaoming.age);

        xh.name = "小红";
        xh.age = 3;

        System.out.println(xh.name);
        System.out.println(xh.age);
    }
}

构造器详解

package com.oop.demo2;

//
public class Person {

    String name;
    int age;
    //一个类即使什么都不写,它也会存在一个方法
    //显示的定义构造器

    //实例化初始值
    //1.使用new关键字,必须要有构造器
    //2.用来初始化值
//    public Person(){
//
//    }
//
//    //有参构造:一旦定义了有参构造,无参就必须显示定义
//    public Person(String name){
//        this.name = name;
//
//    }

    //alt+insert快捷键,选择constructor,直接OK,生成有参;下方选择Select None就生成无参


    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

/*
    public static void main(String[] args) {

        //new 实例化一个对象
        Person person = new Person("kuangshen",23);

        System.out.println(person.name);//qinjiang
}


        构造器:
            1.和类名相同
            2.没有返回值
        作用:
            1.new 本质调用构造器
            2.初始化对象的值
        注意点:
            1.定义了有参构造之后,如果想使用无参构造,必须显式的定义一个无参的构造

        Alt+Insert   会大量使用

        this.   代表当前类  =  后面的代表传进来的值
 */


package com.oop;


//一个项目应该只存一个main方法
//一般习惯分屏放在右边,右键点击类名.java然后选择Split right
public class Application {
    public static void main(String[] args) {

        //new 实例化一个对象
        Person person = new Person("kuangshen",23);

        System.out.println(person.name);//qinjiang

    }
}

创建对象内存分析

package com.oop;

import com.oop.demo03.Pet;

public class Application {
    public static void main(String[] args) {

        Pet dog = new Pet();//dog是一个变量,相当于一个容器,存放pet()对象的地址
        dog.name = "旺财";//对象中的成员变量先默认初始化,再显示初始化
        dog.age = 3;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);

        Pet cat = new Pet();
    }
}
package com.oop.demo03;

public class Pet {
    public String name;
    public int age;

    //无参构造


    public void shout(){
        System.out.println("叫了一声");
    }
}

String是final的,所以在常量池里,

3是一个int类型的数字,不是常量

//dog是一个变量,相当于一个容器,存放pet()对象的地址
//对象中的成员变量先默认初始化,再显示初始化
//堆存储对象和数组元素,栈存储系统调用变量(例如引用)

简单小结类与对象

package com.oop;

public class Application {
    public static void main(String[] args) {
        /*
        1.类与对象
            类是一个模板:抽象,对象是一个具体的实例
            
        2.方法
            定义、调用!
            
        3.对象的引用
            引用类型 :除基本类型(8)外
            对象是通过引用来操作的:栈--->堆
        
        4.属性:字段Field 成员变量
            默认初始化:
                数字:0  0.0
                char:u0000
                boolean:false
                引用: null
                
            修饰符:  属性类型 属性名 = 属性值;
            
        5.对象的创建和使用
            1)必须使用new关键字创建对象,构造器 Person kuanshen = new Person();
            2)对象的属性  kuangshen.name
            3)对象的方法  kuangshen.sleep()
            
        6.类:(只能写属性和方法)
            静态的属性  属性
            动态的行为 方法
            
            封装、继承、多态
         */
          }
}
posted @ 2021-03-31 11:15  JwStudy  阅读(60)  评论(0)    收藏  举报