• java面向对象基础知识


    一、面向对象与面向过程的区别:
    ①所处的角色不同:前者指挥者,后者执行者;②所需知道的事情不同:前者知道哪些是做这些事情的人就可以,不需了解具体的事情操作的过程。后者需要具备应有的技能来做这些事情。
    二、面向对象的基本操作过程
    指挥者采用面向对象思想,通过创建类,来创建统一的属性值【成员属性】和(做事的)方法【成员方法】。
    通过创建的类或者jdk已有的类,来创建具体的对象,属性值明确,方法明确。
    举例:创建类
     1 package com.oracle.demo02;
     2 
     3 public class Person {
     4     private String name;// 此时外部的类不能访问
     5     private int age;// 隐藏实现细节
     6     // 使用方法,提供接口进来的值 属性都私有化,并提供setXxx getXxx方法对其进行访问。
     7 
     8     public void setName(String name) {
     9         this.name = name;
    10     }
    11 
    12     // 使用取值、、用于给出用户反馈
    13     /*
    14      * public String getName(){ return name; }
    15      */
    16     public void setAge(int a) {
    17         if (a >= 0 && a < 149) {
    18             age = a;
    19         } else {
    20             System.out.println("该年龄不可信");
    21         }
    22 
    23     }
    24 
    25     public int getAge() {
    26         System.out.println("get");
    27         return age;
    28     }
    29 
    30     public void speak() {// 方法可以被外界访问
    31         // name.age此时为成员变量,非局部变量
    32         System.out.println("我的名字是" + name + "今年" + age + "岁。");
    33     }
    34 
    35     // 在person类中定义功能,判断两个人是否同龄人
    36     public boolean people(Person p) {
    37        return p.age==this.age;//此时的this,指的是谁调用该方法就是谁
    38        //传入两个,一个通过调用传入,一个通过形参传入
    39     }
    40 }
    View Code

    举例:创建对象及方法的调用

     1 package com.oracle.demo02;
     2 
     3 public class Demo01 {
     4     public static void main(String[] args) {
     5         Person p = new Person();
     6         p.setName("张三");
     7         p.setAge(35);
     8         p.speak();
     9         Person p2 = new Person();
    10         p2.setName("xiao张三");
    11         p2.setAge(35);
    12         p2.speak();
    13         //比较两人是否为同龄人
    14         boolean flag=p2.people(p);
    15         System.out.println(flag);
    16     }
    17 }
    View Code
    1、创建冰箱的对象
    冰箱 bx = new 冰箱();  
    2、调用冰箱的功能
    对象.功能()
    bx.打开();
    bx.存储(new 大象());
    bx.关闭();
    public class 类名 {
    //可编写0n个属性 成员变量
        数据类型 变量名1
        数据类型 变量名2
    //可编写0n个方法 成员方法
    修饰符 返回值类型 方法名(参数){
    执行语句;
    }
    }

    注:此时的成员方法的修饰符为public,而在测试类main中修饰符为public static

    三、对象调用方法内存图

     
     
    四、类和对象的区别
    前提:面向对象的思想力求在设计类的时候,其成员属性和成员方法与现实要求一致。
    区别
    对象
    关系
    抽象的,比如人类的皮肤属性,未有具体的值
    具体的,通过类,new一个新的对象,给皮肤属性赋值(黑、白、黄)
    五、局部变量和成员变量的区别
    区别
    成员变量
    局部变量
    写法位置
    直接定义在类中
    定义在方法或{}语句中
    内存位置
    在堆中保存,具有地址
    在栈中保存
    生命周期
    随着对象的出现而出现,使用gc()垃圾回收机制清除
    随着方法的出现而出现,随着方法的消失而消失
    初始化值
    成员变量出现在堆中,属性有默认值;例如int 0;Boolean FALSE;String null;
    局部变量出现在栈中,必须人为赋值才能使用
     
    六、基本数据类型和引用数据类型的参数传递
    区别
    基本数据类型
    引用数据类型
     
    传递的具体的值,在栈中存在,方法用完执行弹栈
    传递地址,在堆中存在,方法和main中均指向同一个地址和对象
     
  • 相关阅读:
    MySQL too many connections
    【MySQL】 清除等待连接
    wmic 获得系统硬件信息
    Linux 修改用户名
    初步了解虚拟化
    MySQL show 语句
    php去除bom
    jq闭包
    git
    地址收藏
  • 原文地址:https://www.cnblogs.com/mlf19920916/p/12051412.html
Copyright © 2020-2023  润新知