面向对象(面向对象程序设计)_3

  本篇文章为你整理了面向对象(面向对象程序设计)的详细内容,包含有面向对象和面向过程的区别 面向对象程序设计 面向对象是什么意思 面向对象的程序设计语言是 面向对象,希望能帮助你了解 面向对象。

  引出类与对象(oop) -- 为什么需要类与对象(oop)

  例:我有两只小狗,有姓名,年龄,性别,怎么完成该操作?

  
String[] Dog = {"小白","6","公"}; //数字类型不明确

  String[] Dog = {"小新","6","公"}; //数字类型不明确

 

 

  
上面案例中完成了小狗的属性创建,那么现在我想给小狗添加一个爱好怎么办?是不是特别麻烦,如果是100只小狗呢?

  类与对象是什么:

  看前言已经知道,用变量和数组创建一个猫是多么的麻烦,增加一个属性就需要重复大量代码

  类:如猫类 - 把所有猫的属性和行为提取到该猫类中形成一个类

  猫类:是自定义的数据类型,如int就是java提供的数据类型

  
 

  快速入门:

  看下面代码就可知道和原本的变量和数组好处在哪,属性类型明确,添加属性值方便,开发效率高

  
String name; // 可以叫 1.属性 2.成员变量 3.字段

   int[] age; // 可以放所有基本数据类型和引用类型

   doeble money;

  pring(car.name+" "+car.age...)//直接输出属性,会输出属性默认值

  //int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,

  //boolean false,String null

 

 

  
创建对象然后在方法区加载类信息 -- (只是加载一次,不会创建一个对象加载一次)

  在堆中创建空间,进行默认初始化

  把栈地址指向对象

  进行初始化如:cat,pag = 10; cat.name = "小白"

  
 

  成员方法:

  什么是成员方法?就是在类在写一个方法(方法是基础里的知识),和写一个属性是一样的

  为什么需要成员方法?:

  循环遍历一个数组 是否需要写代码遍历循环,

  在遍历一个数组呢,复制粘贴代码在循环一次?那我要改动遍历代码,所有的复制粘贴代码都要改?

  解决问题:所以只需要通过调用成员方法,就可以减少代码的复用

  
一个方法最多一个返回值(但是可以有多个返回结果,返回数组形式)

  可以返回任意类型,基本数据类引用类型(数组,对象)

  如果方法是void,不需要写return,或者只写return(不能用返回值)

  返回值类型return必须和返回值统一或者兼容,如:需要返回值是double,return可以返回int,反过来就不可以需要数据类型可以转换

  遵循驼峰命名法

  
一个方法可以有0个参数,也可以有多个参数有逗号隔开

  参数类型可以是任意类型,基本数据类型或引用类型

  调用参数方法时,传入的参数一定是相同的类型或兼容的类型

  方法定义时的参数叫形参(形式参数),调用方法时传入的叫实参,实参和形参必须统一或兼容

  


//一个方法可以有0个参数,也可以有多个参数有逗号隔开

 

   public int show(int num1, int num2){

   return num1+num2;

   //参数类型可以是任意类型,基本数据类型或引用类型

   public int[][] show2(int[][] map){

   int[][] nums = new int[11][11];

   return nums;

   }

 

  
同类中可以直接调用同类中的其它方法

  在方法中可以通过对象调用其它类中的方法 - 这里注意因为跨类调用还需要考虑访问修饰符

  
引用类型传递的是地址 - 会对引用类型改变

  如果在方法中改变了传递过去的地址,改变了地址或指空,那么对引用类型不会进行影响

  
 

  方法的重载:

  什么是重载?- 同一个类中,多个方法名称一样的方法存在,但是形成列表不一致

  重载的好处 - 如我的方法是显示加法后的结果,那可以是int加int,doblue加int,那么可以通过同一方法名来实现,只需要传递不同的参数

  
可变参数本质就是数组

  可以参数可以和普通类型参数一起放在形成列表中,可变参数必须放在普通参数后面

  一个形成列表,只能出现一个可变参数

  
}
 

   //可以参数可以和普通类型参数一起放在形成列表中,可变参数必须要在普通类型参数后面

   public void sum(String name,int... nums){

   };
 

   //一个形成列表只能出现一个可变参数

   //public void sum(double... num,int... nums){};//错误

  }

 

 

  作用域:

  什么是作用域?就是属性在该类中的使用范围

  作用域一般访问:全局变量和局部变量

  全局变量:在该类中都可以使用

  局部变量:只能在自己的一亩三分地使用,在自己的代码块中使用

  
全局变量(属性)有默认值;局部变量没有默认值(定义时必须赋值)

  全局变量(属性)和局部变量名字可以重复,访问时就近原则,靠我近访问谁

  全局变量(属性)可以使用访问修饰符,局部变量不可以

  全局变量(属性)伴随着对象的销毁而销毁,局部变量是代码块的销毁而销毁

  通俗易懂版:new一个对象,该对象不销毁全局变量还在,局部变量一般中方法中,如方法结束局部变量就销毁

  
理解:调用构造器时,对象已存在内存中,调用构造器去完成对象属性的的初始化

  在理解:等于AA类中有 String name; 我的操作等于 String name = "小白";

  
构造器完成对象的初始化,不是创建对象

  类中没有定义构造器,系统默认是给一个默认的无参构造器

  定义了自定义的构造器后,默认的构造器就会被覆盖,需要重新定义才能使用

  
 

  对象创建的流程+构造器版本:

  在堆在分配空间 == 空对象

  对象初始化 - 属性先赋值(默认值先赋值,在到定义值,在到构造器)

  栈中接收堆中地址

  this关键字:

  什么是this?我直接调用我自己

  为什么要使用this?如:构造器中形参为 name 类属性 name 我要name = name怎么办?是不是太含糊不清,谁是谁的name

  案例说明什么是,我直接调用我自己:

  
访问方法语法:this.方法名(参数列表)

  访问构造器语法:this(参数列表) - 必须写在构造器中使用,必须在构造器中第一条中,不能递归调用(就是我调用你,你调用我)

  
this关键字可以区分属性和局部变量

  this关键字只能在类定义的内部使用,去类外部使用谁知道this是什么

  以上就是面向对象(面向对象程序设计)的详细内容,想要了解更多 面向对象的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: