首页 > 其他分享 >7.面向对象

7.面向对象

时间:2024-09-05 19:48:40浏览次数:8  
标签:对象 成员 面向对象 使用 new 方法

MODULE 7 面向对象

1.知道为啥使用面向对象思想编程

2.知道怎么使用面向对象思想编程

3.知道什么时候使用面向对象思想编程

4.会利用代码去描述世间万物的分类

5.会在一个类中访问另一个类中的成员 -> new对象

6.成员变量和局部变量的区别

一、类和对象

(一)面向对象的介绍

1.面向过程:自己的事情自己干,代表语言c语言

2.面向过程:自己的事情别人去干,代表语言java语言

3.为啥要使用面向对象思想:懒

很多功能别人都给我们实现好了,我们只需要直接拿过来使用即可,简化了我 们自己的编写过程,减少了我们的代码量

4.什么时候使用面向对象思想编程:

调用别人的功能时

在一个类中想使用别的类中的成员时,就使用面向对象思想编程

至于我们使用的功能怎么去实现的,我们不关心,我们只要知道怎么使用即可

5.怎么使用面向对象思想编程:

(1)new一个 -> 点代表调用

(2)特殊:如果调用的成员带static关键字,我们不需要new,我们直接类 名点即可

(二)类和对象

1.类(实体类)class

(1)测试类:待main方法的类,主要是运行代码的

(2)实体类:是一类事物的抽象表现形式

组成部分:

A.属性(成员变量):这一类事物有啥

(a)定义位置:类中方法外

(b)作用范围:作用于当前位置

(c)定义格式:数据类型 变量名

(d)默认值:

整数:0

小数:0.0

字符:’\u0000’

布尔:false

引用:null

B.行为(成员方法):这一类事物都能干啥

将module6中方法的static去掉,其他都一样

2.对象

(1)概述:一类事物的具体表现

(2)使用:

A.导包:import 包名.类名

如果两个类在同一个包下,想要使用对方的成员不需要导包

不在同一个包下,需要导包

特殊包:java.lang -> 使用lang包下的类不需要导包 -> String

友提:在学习四种权限修饰符之前,尽量让两个类在同一个包 下

B.创建对象:想要使用哪个类中的成员,就new哪个类的对象

类名 对象名 = new 类名() -> 比如Person p = new Person()

C.调用成员(成员变量,成员方法) -> 想要使用哪个类中的成 员,就用哪个类的对象去点那个成员

对象名.成员变量名 = 值

对象名.方法名() -> 调用的是无参无返回值方法

对象名.方法名(实参) -> 调用的是有参无返回值方法

数据类型 变量名 = 对象名.方法名() -> 调用的是无参有 返回值方法

数据类型 变量名 = 对象名.方法名(实参) -> 调用的是有 参有返回值方法

(三)匿名对象的使用

1.int i = 10

(1)int:是数据类型

(2)i:变量名

(3)等号右边的10:真正的数据

2.Person p = new Person()

(1)等号左边的Person:对象的类型,好比是int

(2)p:对象名

(3)等号右边的new Person():真正的数据,是一个Person对象,将这个 对象真正创建出来了

3.所谓的匿名对象:其实就是没有等号左边的部分,只有等号右边的部分(对象)

4.使用:

new 对象().成员

5.注意:

(1)如果我们只想单纯的调用一个方法,让方法执行,我们可以考虑使用匿 名对象

(2)但是如果涉及到赋值,千万不要使用匿名对象

(四)一个对象的内存图

(五)两个对象的内存图

phone1和phone2都是新new出来的对象,所以在堆内存中开辟了两个不同的空 间,修改自己空间中的数据不会影响其他空间中的数据

(六)两个对象指向同一空间内存图

phone2是phone1给的,phone1在内存中保存的是地址值,所以此时phone2和 phone1地址值一样,操作同一片空间中的数据,所以修改一个对象的数据会影响 另一个对象

二、成员变量和局部变量的区别

1.定义位置不同(重点)

(1)成员变量:类中方法外

(2)局部变量:定义在方法之中或者参数位置

2.初始化值不同(重点)

(1)成员变量:有默认值的,所以不用先手动赋值,就可以直接使用

(2)局部变量:是没有默认值的,所以需要先手动赋值,再使用

3.作用范围不同(重点)

(1)成员变量:作用于整个类

(2)局部变量:只作用于自己所在的方法,其他方法使用不了

4.内存位置不同

(1)成员变量:在堆中,跟着对象走

(2)局部变量:在栈中,跟着方法走

5.生命周期不同

(1)成员变量:随着对象的创建而产生,随着对象的消失而消失

(2)局部变量:随方法的调用而产生,随着方法的调用完毕而消失

package com.shujia.d_object_neicun;

public class Person {

String name;// 成员变量

public void eat(){

int i = 10;// 局部变量

System.out.println(i);

System.out.println(name);// 成员变量不用手动赋值可以直使用,因为 有默认值

}

public void drink(){

int j;

System.out.println(j);// 局部变量没有默认值,所以需要手动赋值再 使用

System.out.println(name);

System.out.println(i);// i是eat方法的局部变量,在drink中使用 不了

}

}

三、练习

自定义类型(引用数据类型)

这种数据类型操作之前必须要赋值

需要new对象赋值(String比较特殊,可以直接=赋值)

标签:对象,成员,面向对象,使用,new,方法
From: https://www.cnblogs.com/swh666/p/18395486

相关文章

  • 9.面向对象(1)
    MODULE9 面向对象1.会定义静态成员以及会调用静态成员2.会使用可变参数(会给可变参数传参)3.会二分查找(手撕)4.会冒泡排序(手撕)5.会debug的使用一、static关键字(一)static的介绍以及基本使用1.概述:static是一个静态关键字2.使用:(1)修饰一个成员变量:static数据类型变量名(2)修饰一个方......
  • Python 之面向对象
    __slots__限制类的绑定属性__str__:print打印对象,返回用户看到的字符串__repr__:返回程序开发者看到的字符串,如直接输入变量,是为调试服务的classStudent(object):def__str__(self):return'Studentobject(name:%s)'%self.nameprint(Student('hell0'))可以直......
  • 12 Python面向对象编程:运算符重载
    本篇是Python系列教程第12篇,更多内容敬请访问我的Python合集在理解运算符重载之前我们已经知道了什么是方法重载,方法重载就是子类继承父类并且定义了一个和父类一样的方法。知道了什么是重载,也知道了什么是运算符(加减乘除等),那么运算符重载也很好理解了,其实就是在......
  • 13 Python面向对象编程:装饰器
    本篇是Python系列教程第13篇,更多内容敬请访问我的Python合集Python装饰器是一种强大的工具,用于修改或增强函数或方法的行为,而无需更改其源代码。装饰器本质上是一个接收函数作为参数的函数,并返回一个新的函数。装饰器的用途包括日志记录、性能测试、事务处理、缓......
  • PHP8面向对象快速入门四 类的多态 方法重载
    在面向对象编程中,多态是指相同的操作或方法可以作用于不同的对象,从而产生不同的结果。方法重写方法重写是子类提供对从父类继承的方法的特定实现。这是实现多态的一种方式。方法重写允许子类提供具体的实现,而不是使用父类中定义的实现。示例: <?phpclassAnimal{pub......
  • 12 Python面向对象编程:运算符重载
    本篇是Python系列教程第12篇,更多内容敬请访问我的Python合集在理解运算符重载之前我们已经知道了什么是方法重载,方法重载就是子类继承父类并且定义了一个和父类一样的方法。知道了什么是重载,也知道了什么是运算符(加减乘除等),那么运算符重载也很好理解了,其实就是在类里面......
  • 13 Python面向对象编程:装饰器
    本篇是Python系列教程第13篇,更多内容敬请访问我的Python合集Python装饰器是一种强大的工具,用于修改或增强函数或方法的行为,而无需更改其源代码。装饰器本质上是一个接收函数作为参数的函数,并返回一个新的函数。装饰器的用途包括日志记录、性能测试、事务处理、缓存、权......
  • Python中的“类与对象:实例化对象”——掌握面向对象编程的核心技能
    引言面向对象编程不仅是一种编程范式,更是一种思考方式。它允许我们以“对象”为中心来组织代码,每个对象都包含数据(属性)和可以操作这些数据的方法。类则是定义了对象的蓝图或模板,描述了该类型的对象应该具有哪些属性和方法。而实例化对象,则是从这个蓝图中创建具体实例的过程。掌握......
  • 面向对象程序设计之链表 list 的简析(C++)
    简介:链表是一个双向的结构,与string与vector不同的是他不支持[]访问,因为链表是由一个节点一个节点连接而成的,并不连续。我们可以在常数量级内对于链表进行插入与删除数据1.构造函数我们在cplusplus.com中可以查到链表总共有四种构造的方式:1.无参构造(默认构造);2.使用n个va......
  • 12.面向对象(4)
    MODULE12 面向对象知道final修饰成员之后特点会使用静态代码块以及知道静态代码块的使用场景会使用匿名内部类一.权限修饰符(一)概述在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容 会有不同的访问权限(1)public:公共的,最高权限,被public修饰的成......