面向对象(一)

面向对象的思想概述

  •   类和对象是面向对象的核心概念  万物皆对象  
    • 类是对一类事物的描述,是抽象的,概念上的定义.
    • 对象是实际存在的该类事物的每一个个体,因而也称为实例(instance)
  • 万物皆对象
  • 类:抽象概念的人       对象:实实在在的某个人
  • 面向对象程序的设计的重点是   类的设计
  • 类的设计 ,   就是类的成员的设计

  

java类及类的成员

  一.对象的创建如何使用

    1.属性:对应类中的成员变量(属性=成员变量=field=域,字段)

      2.行为:就是类中的成员方法(方法=成员方法=函数=method)

  

  二 类和对象的使用

    1.类是引用数据类型,所以需要通过new 关键字来创建

    person类:(创建类,设计类的成员)

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 + "进行交流");
  }
}

  2.再创建一个Java的测试类  PersonTest   (创建类的对象)

//测试类
public class PersonTest { public static void main(String[] args) { // 创建Person 类的对象 Person p1 = new Person(); // 调用对象的结构(属性,方法) // 调用属性 对象.属性 p1.name = "Tom"; System.out.println(p1.name); // 调用方法 对象.方法 p1.eat(); p1.sleep(); p1.talk("chinese"); } }

  3.通过"对象.属性"或者"对象.方法"调用对象的结构

  注意:   

    1.每new 一次就创建了另一个对象    每一个对象都独立的拥有一套类的属性(属性   非static),意味着修改一个对象的属性a,不影响另一个对象的属性a的值.

Person p2 = new Person();
    System.out.println(p2.name);   //null     初始有默认值

  

    2.

Person p3 = p1;     //将对象p1的地址值  赋给变量p3     导致p1,p3指向堆空间中的同一个位置
System.out.println(p3.name);
p3.age = 10;
System.out.println(p1.age);

  三 类中属性(成员变量)    vs局部变量

      1.相同点:

        • 定义变量的格式   数据类型  变量名  =变量值
        • 先声明 后使用
        • 变量都有其作用域                    

      2.不同点:

        • 在类中声明的位置不同
          •   属性:直接定义在类的一对括号内.
          •         局部变量:声明在方法内,方法参数,代码块内,构造器内部的的变量 
        • 关于权限修饰符的不同
          •   属性:可以在声明属性的时候  指明其权限,使用权限修饰符
          •   局部变量  不可以使用权限修饰符
        • 默认初始化值得情况
          •   属性:类的属性  根据其类型,都有默认初始化值
            • 整形(byte,short,int,long)  0
            • 浮点型(float,double)  0.0
            • 字符型(char)   0(或者 u0000)
            • 布尔型(boolean)   false
            • 引用数据类型(类,接口,数组)   null  
          •   局部变量在调用是时候进行赋值即可.   
        • 内存中加载得位置
          •   属性:加载到堆空间(非  static)
          •   局部变量:加载到栈空间       

    

对象的内存解析:

  内存解析:

     1.  堆:存放对象的实例.

        栈:存储局部变量

        方法区:类的信息,常量,静态变量,即时编译器编译后的代码.

     2.  上述例子的内存解析:

  

      

    

原文地址:https://www.cnblogs.com/lxsfve/p/13044815.html