zoukankan      html  css  js  c++  java
  • JAVA语言的基本元素:类和对象

    面向对象的核心概念

    类(Class)和对象(Object)是面向对象的核心概念

    类是对一类事物的描述,是抽象的,概念上的定义。

    对象是实际存在的该类事物的每个个体,因而也称为对象。

    “万事万物皆对象”。

    设计类其实就是设计类的成员 

    类的简单及创建调用

    package com.chenxi.java;
    /*
    一、设计类,其实就是设计类的成员
    属性=(等于)成员变量=(等于)field=(等于)域、字段
    方法=成员方法=函数=method
    
     */
    public class OOPTest {
        public static void main(String[] age){
            Person p1 = new Person();//创建类的对象,实例化一个类
            //调用对象结构;属性与方法
            //调用属性
            p1.name = "tom";//调用赋值
            p1.isMale=true;//调用赋值
            System.out.println(p1.name);//调用打印输出
            //调用方法
            p1.eat();
            p1.sleep();
            p1.talk("chinese");
        }
    }
    //创建类
    class  Person{
        //类的属性:对应类中的成员变量
        String name;
        int age=1;
        boolean isMale;
        //类的方法: 对应类中成员方法
        public void eat(){
            System.out.println("人可以吃饭");
        }
        public void sleep(){
            System.out.println("人可以休息");
        }
        public void talk(String language){
            System.out.println("人可以说话"+language);
        }
    }
    

      如果创建一个类的多个人对象,则每个对象都独立的拥有这个类的属性。

    package com.chenxi.java;
    /*
    一、设计类,其实就是设计类的成员
    属性=(等于)成员变量=(等于)field=(等于)域、字段
    方法=成员方法=函数=method
    二、类和对象的使用(面向对象的思想)
    1.创建类,设计类的成员
    2.创建类的成员
    3.通过"对象.属性"或者"对象.方法()"调用对象的结构
    三、如果创建一个类的多个对象,则每个对象都独立拥有一套类的属性。(非static的)
    意味着如果修改一个对象的属性a。则不影响另外一个对象属性a的值
     */
    public class OOPTest {
        public static void main(String[] age){
            Person p1 = new Person();//创建类的对象,实例化一个类
            //调用对象结构;属性与方法
            //调用属性
            p1.name = "tom";//调用赋值
            p1.isMale=true;//调用赋值
            System.out.println(p1.name);//调用打印输出
            //调用方法
            p1.eat();
            p1.sleep();
            p1.talk("chinese");
            //***************************
            Person p2 = new Person();
            System.out.println(p2.name); //输出null;有默认初始化值
            Person p3 = p1;//将p1对象保存的对象地址值复制给p3,p1与p3指向同一个地址值
            System.out.println(p3.name);//输出p3的name属性值所以也是tom
            p3.age = 3;//修改p3属性age值其实就是修改p1属性age的值,因为地址空间相同
            System.out.println(p1.age);//打印p1属性age的值所以是3
        }
    
    }
    //创建类
    class  Person{
        //类的属性:对应类中的成员变量
        String name;
        int age=1;
        boolean isMale;
        //类的方法: 对应类中成员方法
        public void eat(){
         String food ="烙饼";//局部变量 System.out.println("人可以吃饭"); } public void sleep(){ System.out.println("人可以休息"); } public void talk(String language){//局部变量 System.out.println("人可以说话"+language); } }

      测试

    tom
    人可以吃饭
    人可以休息
    人可以说话chinese
    null
    tom
    3
    

    对象创建和使用的内存解析

    堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。

    通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放

    方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
    类中属性的使用
    属性(成员变量) VS 局部变量
    1.相同点
    1.1定义变量的格式  :数据类型 变量名 = 变量值
    1.2 先声明,后使用
    1.3 变量都有其作用域
    2.不同点
    2.1 在类中声明的位置的不同
        属性:直接定义在类的一对{}内
       局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
    2.2    关于权限修饰符的不同
    属性: 可以在声明属性时,指明其权限,使用权限修饰符
    常用的权限修饰符有:private、public、缺省、protected----》封装性
    局部变量不可以使用修饰符
    2.3默认初始化值
    属性:类的属性根据其类型都有默认初始化值
    整型(byte、short、int、long):0
    浮点型(float、double):0.0
    字符型(char): 0(或‘u0000’)
    布尔型(boolean):false
    引用数据类型(类、数组、接口):null
    局部变量: 没有初始化值;调用之前一定要赋值;特别的形参在调用时赋值即可
     内存中加载的位置不同
    属性:加载到堆空间中(非static)
    局部变量:加载到栈空间
     
     
     
  • 相关阅读:
    用python实现批量替换.doc文件文件内容
    记我是如何通过Security+考试的
    去哪儿笔试羊生羊问题
    CSS作用域问题
    常用的几种清除浮动的方式
    ECE转专业找工作经历-从零电面到facebook offer
    面经-Bloomberg
    题解-Linked List Cycle II
    自我介绍
    解题技巧-发现子结构
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/14148188.html
Copyright © 2011-2022 走看看