当前位置: 移动技术网 > IT编程>软件设计>面向对象 > 面向对象编程(类和对象、构造方法、关键字this)

面向对象编程(类和对象、构造方法、关键字this)

2020年08月01日  | 移动技术网IT编程  | 我要评论
1.面向过程和面向对象面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。



面向过程和面向对象

面向过程和面向对象都是对软件分析、设计和开发的一种思想。它指导着人们以不同的方式去分析、设计和开发软件。

1.面向过程和面向对象的总结

  • 都是解决问题的思维方式,都是代码组织的方式。
  • 面向过程是一种“执行者思维”,解决简单问题可以使用面向过程。
  • 面向对象是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象。
  • 面向对象离不开面向过程:
    • 宏观上:通过面向对象进行整理设计。
    • 微观上:执行和处理数据,仍然是面向过程。

1.1面向过程和面向对象的区别和联系

早期先有的面向过程的思想,随着软件规模的扩大,问题复杂性渐渐提高,面向过程的弊端越来越明显的显示出来,然后出现了面向对象思想并成为目前主流的方式。
所以面向对象和面向过程的区别在于:面向过程更适合用在简单的,可以用线性思维解决的事物。而比较复杂,使用线性思维无法解决的事物责更适合使用面向对象思维解决。
面向过程和面向对象都是解决实际问题的一种思维方式,二者线相辅相成,并不对立。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析这个系统;但是具体到微观操作,仍然需要使用面向过程方式来处理。
在这里插入图片描述

2.类和对象

  • 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
  • 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。

例如,月饼模具和月饼。月饼模具可以看做是一个类,而月饼就是右月饼模具类实例出来的对象。

/**
 * 创建一个 人 类
 */ public class Person { //成员属性  姓名,性别,年龄是所有对象“人”的共同属性 String name; String sex; int age; //构造方法 public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } public Person() { } //成员方法 //吃饭,和睡觉是所有对象”人“都有的行为 public void sleep(){ System.out.println("睡觉"); } public void eat(){ System.out.println("吃东西"); } } public class Test { public static void main(String[] args) { //由Person类实例的对象p1,p2,p3 Person p1 = new Person("小明","男",18); Person p2 = new Person("小红","女",16); Person p3 = new Person("张大炮","男",23); //他们都可以执行Person类的方法 p1.eat(); p2.eat(); p3.eat(); } } 

2.1对象的一些操作方法

  • 如何创建对象
    • Scanner input = new Scanner(System.in);
    • Person p1 = new Person();
  • 如何操作属性 对象名.属性名
    • p1.name = “张二炮”;
    • p1.age = 18;
  • 如何调用方法 对象名.方法名
    • p1.eat();
    • p1.sleep();

2.2成员变量和局部变量

在类中定义的变量叫成员变量,在方法中(包括方法的参数,代码块中)定义的变量叫做局部变量。两者主要区别有

  • 代码中位置不同
    成员变量定义在类中,局部变量定义在方法中。
  • 内存中位置不同
    成员变量在堆内存中,局部变量在栈内存中。
  • 是否有默认值
    成员变量有默认值,局部变量没有默认值。
  • 代码作用范围不同
    成员变量作用范围在当前类的方法,局部变量作用范围在所属方法或代码块中。
  • 生命周期不同
    成员变量生命周期与所属类生成的对象声明周期相同,局部变量生命周期与所属方法或代码块相同。

在这里插入图片描述

补充:当成员变量与局部变量相同时,会优先调用局部变量。使用this关键字可以调用成员变量。例如:this.name

3.构造方法及构造方法重载

3.1构造方法

构造方法也叫构造器,用于对象的初始化。构造器是一个创建对象时自动调用的特殊方法,目的是对象的初始化。构造器的名称应该与类名一致(首字母大写)。Java通过new关键字调用构造器从而返回该类的实例。

构造方法的4个要点:
构造方法的方法名必须与类名一致。
构造方法通过new关键字调用。
构造方法不能定义返回值类型。
如果没有定义构造方法,编译器会自动定义一个无参数的构造方法,如果已经定义构造方法编译器不会自动添加。(所以当我们创建了有参数的构造方法,并且需要无参构造方法时需要手动创建无参数构造方法。)

创建一个对象的步骤

  1. 分配对象空间,并将对象成员变量初始化为0或null。
  2. 执行属性值的显示初始化。
  3. 执行构造方法。
  4. 返回对象地址给相关变量。

3.2构造方法的重载

构造方法的重载和普通方法的重载基本相同。
举个栗子
在这里插入图片描述

 //构造方法 public Person() { } public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } 

4.关键字this

this的本质就是“创建好的对象的地址”,由于在构造方法调用钱,对象已经创建。所以,在构造方法中也可以使用this代表“当前对象”。

4.1 this的用法

调用成员变量 this.name
如果成员变量和局部变量同名,可以用this来区分两者。如果没有同名的局部变量,可以不写。
调用成员方法 this.eat()
这种情况下,this可以直接省略。
调用构造方法 this(…)
使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中使用,并且必须位于构造方法的第一句。
this不能用于static方法中。
因为static修饰过的方法不依赖于对象,所以调用static方法时,对象可能并没有创建,也就没有this被创建。

5.声明

文档来源于“北京尚学堂”,本人只进行了知识点的整理,目的在方便自己。 

本文地址:https://blog.csdn.net/weixin_45451375/article/details/108258844

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网