IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 创建对象内存分析与继承 -> 正文阅读

[Java知识库]创建对象内存分析与继承

package com.rgf.oop.Demo04;

public class Application {
    public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name="旺财";
        dog.age=3;
        dog.shout();
        System.out.println(dog.name);
        System.out.println(dog.age);
       
    }
}
package com.rgf.oop.Demo04;

public class Pet {
    public String name;
    public int age;
    //无参构造
    public void shout(){
        System.out.println("叫了一声");
    }
}

我们根据这两块代码来进行对于此刻的内存分析:

内存分为栈和堆,在堆里面还有方法区。

第一步的时候,我们会把Application这个类的一些代码信息放进去内存里面,即在堆里面的方法区里面加载Application类,这个类里面有main()方法,还有一些字符串,我们一般称为常量。一般有一个常量池,里面存放一些常量。例如:常量池:旺财

之后我们执行main方法的时候,main方法是在栈里面的最底下,我们执行main方法的时候,我们要new一个类,叫Pet,我们要创建这个类Pet,这个类里面有name和age这两个字段,还有一个方法叫shout( )。我们有Pet这个类之后,我们进行new这个类的时候,我们进入Pet这个类。new完所生成的对象名是在栈里面(引用变量名),而真正的对象是在堆里面。

在堆里面我们所new的类Pet,会有一个内存地址,我们假设0x0001,即该对象的内存地址。而且有默认的name=null,age=0,还有一个方法shout(),这个方法在new的时候所调用的是堆里面的方法区里面的Pet的shout()方法。

之后完成上述我们成功new出来一个对象,之后我们要对这些对象进行赋值

而且在堆里面的方法区也有静态方法区static,这个里面的方法是和类一起加载的,所有对象都是可以使用这个静态方法的。

在栈里面,main()方法压入栈底,然后调用其他方法,其他方法调用完毕之后,main()方法弹出,程序结束。

类与对象的总结:

package com.rgf.oop.Application;

public class Application {
    /*
    1.类与对象
    类是一个模板:抽象,对象是一个具体的实例
    2.方法
    定义、调用
    3.对象的引用
    引用类型:基本类型(8)
    对象是通过引用来操作的:栈(引用对象)----->堆(真实对象,地址)
    4.属性:字段Field 成员变量
    默认初始化:
    数字:  0  0.0
    char:u0000
    boolea:false
    引用:null
    属性的定义:
    修饰符  属性类型 属性名=属性值!
    5.方法:定义和调用
    6 .对象的创建和使用:
    (1)必须使用new关键字创造对象,构造器Person rgf=new Person();
    (2)对象的属性   rgf.name;
    (3)对象的方法    rgf.sleep();
    7.类:
    静态的属性   属性
    动态的行为   方法
  封装、继承、多态
    
     */
}

封装:该露的露,该藏的藏

我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅暴露少量的方法给外部使用。

封装(数据的隐藏)

通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

记住这句话就够啦:属性私有,get/set

封装思想的具体体现:

package com.rgf.oop.Demo05;
/*
1.提高程序的安全性,保护数据。
2.隐藏代码的实现细节
3.统一接口
4.提高了系统的可维护性
 */
public class Application {
    public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.getId();
        stu1.getAge();
        //在java中,如果判断一个类的两个方法是否相同,
        // 主要参考两个东西,方法名和参数列表,如果方法名相同,方法一定相同,
        //如果参数列表相同,那么一定是同一个方法。
        stu1.setName("rgf");
        stu1.setId(5);
        stu1.setAge(5);
        //stu1.setAge(999); //不合法的
        System.out.println(stu1.getAge()); //println方法的重载
        System.out.println(stu1.getName());
        System.out.println(stu1.getId());
    }
}
package com.rgf.oop.Demo05;
//类  private:私有访问权限
public class Student {

    //属性私有
    private String name; //名字
    private int id; //学号
    private char sex;//性别
    private int age;//年龄

    //提供一些可以操作这个属性的方法!
    //提供一些public的get、set方法。

    //get 获得这个数据
    public String getName() {
        return this.name;
    }

    public int getId() {
        return id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 120 || age < 0) {
            this.age = 3;
        } else {
            this.age = age;
        }
    }

        //set 给这个数据设置值
        public void setName (String name){
            this.name = name;
        }

        public void setId ( int id){
            this.id = id;

        }
    }

运行界面如下:

?我们可以快速利用IDEA进行set和get方法的实现:

1.点击鼠标右键,选择Generate。

?2.点击Generate之后,点击Getter和Setter。

?3.选择所要创建的get或者set方法的属性。

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:22:34  更:2022-04-22 18:23:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:17:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码