zoukankan      html  css  js  c++  java
  • JAVA基础(九)面向对象

     引用https://www.cnblogs.com/xue-er/p/9356553.html。

    面向过程、面向对象

    l  面向过程:可以理解为执行者思考的方式。如何一步步解决问题。

    l  面向对象:可以理解为分配工作发号施令的人,如何简单方便的完成问题。

    面向对象的优点

    l  面向对象思维方式是一种更符合人们思考习惯的思想

    l  面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。

    l  面向对象思维方式将复杂的问题简单化。

    类,对象

     对象是事物存在的实体,如人类,书桌,高楼等。需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。

    对象分为两部分,即静态部分与动态部分。

    1.  静态部分就是不动的,叫做属性,任何对象都具备其自身属性。

    2.动态部分就是行为(方法),如人这一类,会哭,笑,走,跑等。

    属性和行为封存起来就称为类。

    类的实质就是封装对象的属性和行为(方法)的载体。反过来说具有相同属性和行为的一类实体称为类。                                     类就是同一类事物的统称。类也可以说是创造对象的一个模板。

    类中对象的行为是以方法的形式定义的,对象的属性以成员变量的形式定义的。

    局部变量和成员变量区别

    区别一:定义的位置不同

    定义在类中的,变量是成员变量

    定义在方法中或者{}语句块里面的变量,是局部变量(有范围)

    区别二:在内存中的位置不同

    成员变量存储在堆内存的对象中(属于对象 对象存在堆内存 它就也在堆内存)

    局部变量存储在栈内存的方法中(属于方法 方法进栈)

    区别三:生命周期不同

    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失(gc垃圾回收机制,命长

    局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失,命短

    区别四:初始化不同

    成员变量因为在堆内存中,所有默认的初始化值

    局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

     

    成员变量:有默认初始化值  string 为null,int 为0。

    局部变量:没有默认初始化值 必须赋值

    只要不是基本数据类型就是引用数据类型;

    举例

    对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。

    我们把大象装冰箱为例进行分析。

    在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。

    需求:把大象装冰箱里

    对象:大象、冰箱

    分三步:

    1、打开冰箱门

    2、将大象装进去

    3、关闭冰箱门

     分析发现打开、装、关闭都是冰箱的功能(方法)。即冰箱对象具备如下功能:

     冰箱打开

    冰箱存储

    冰箱关闭

    代码描述,上述需求中有两个具体的事物 大象   冰箱

    public class dxbx {
    
        public static void main(String[] args) {
    
        //创建冰箱对象
    
            bx bx=new  bx();
    
           //创建大象对象
    
            dx  dx=new dx();
    
             dx.color="粉色";
    
               //方法调用     格式    对象.方法名,调谁用谁
    
            //打开冰箱
    
            bx.open();
    
            //把大象装去//这里的dx是实参; dax形参
    
    ;用dx(堆里的地址)给dx ssdax形参赋值
    
            bx.play(dx); //因为bx是一个地址;类在堆里已经被赋值了;这里直接通过地址dx和门牌号.color就直接取出了黄色
    
            //关闭冰箱门
    
            bx.down();
    
        }
    
    }
    
     

    大象类

    public class dx {
    
          String  color;
    
          void speak() {
    
           System.out.println("我是"+color+"的大象");
        }
    }
     

     冰箱类

    public class bx {
    
        //打开功能s
    
             public void open() {
    
             System.out.println("打开冰箱门");
    
             } 
    
        //放进去功能       dx自己定义的类,声明这个dx类,只能传dx这个类型 dax形参
    
             public void play(dx dax) {
    
            // 方法随便写,只是为了看出传的谁
    
             dax.speak();
    
             }  
    
        //关闭功能
    
             public void down() {
    
             System.out.println("关闭冰箱门");
    
             }
    
    }

    完整的类包含属性和方法;

     

    类的声明

    属性

    语法:权限修饰符 class 类名{

           //类体

                                   }

    说明:

    .访问权限修饰符 只能是 public 或者 默认(default)

    .类名只要是一个合法的标识符即可 要求首字母必须大写

    .尽量使用单个或者多个有意义的单词来命名

    注意:

    .一个java文件中可以写多个类编译后会生成多个.class字节码文件

    .一个java文件中最多只能有一个被public修饰的类 该类的名字 必须和 java源文件名保持一致

    .一个java文件中如果只有一个类 并且该类不是用public修饰的类名 和 java文件名可以不一样

    1. 类中成员变量的定义 通过对象引用.成员变量名 的方式进行调用

    方法

    构造方法定义:用来创建对象的 并且可以给对象的属性进行初始化赋值

    语法格式:[访问权限修饰符] 类名(形参列表){

                                      方法体

                               }

    特点:

    .方法名和类名 全相同(大小写都要一模一样)

    .没有返回值类型 连void都没有

    .没有具体的返回值 return   return; 可以写 但是不能有任何返回值  默认是不写的 完全不推荐写

    .在创建对象的时候 系统会帮我们调用构造方法   构造方法 不用 对象的引用.方法名 调用

    下方举例

    .写在类的方法不要加Static直接写返回值;

    public 返回值类型方法名(参数列表){};

    例子

    publicvoid run(int a) {}

    .写在方法里面的是局部变量;在调用方法时以局部变量为主就近原则,

    局部变量;

    publicclass car {

       // 属性

       String color;

       intgulu;

    }

     

    成员变量;

        publicvoid run() {

           String color;

           intgulu;}

    最终的执行结果是局部变量,变量的就近原则;

             6.但是加上this就能解决;this是本类变量;代表的是Class car;car类加上this后就和局部变量没有关系了

      This 不能写在main里面;

    this.关键字

    .调用本类中的成员方法

    .访问本类的成员变量

    .调用本类的构造方法

    .this()不能使用在普通方法里  必须在构造方法的第一句

    对象   调用方法的格式   对象.方法名

  • 相关阅读:
    CF981D
    CF883H
    Hdu 5884
    全排列
    二叉搜索树实现
    my.ini配置详解
    主元素问题
    排序算法(还需补充)
    迷宫问题(DFS,BFS)
    算法导论4--求最大和数组
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11269012.html
Copyright © 2011-2022 走看看