当前位置: 代码迷 >> 综合 >> 【JavaSE】类和对象(OOP的基本思想、变量、属性、方法)
  详细解决方案

【JavaSE】类和对象(OOP的基本思想、变量、属性、方法)

热度:2   发布时间:2023-11-26 15:34:18.0

目录

前言

一、基本解释

二、类的属性

1.属性的定义

2.属性的初始化

2.1默认值规则

2.2构造方法规则

2.3定义时初始化规则

2.4构造代码块规则

2.5执行顺序

3.this的用法

4.权限控制

三、类的方法

四、实例化过程

总结

1.变量的总结

2.对象的三个层次总结


前言

        什么是面向对象编程(OOP)?什么是类?什么是对象?

一、基本解释

        面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

        什么是对象?对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

        什么是类?类是一个模板,它描述一类对象的行为和状态。例如男孩女孩就是类(class)

而具体的每个男孩或者女孩为该类的对象(object)

        也就是说类是对象的模板,对象是类的实例。

        关于面向对的其他知识可以在后续的学习之中进行完善和巩固。

二、类的属性

1.属性的定义

        在类中, 但是方法外部定义的变量. 这样的变量我们称为 "字段" 或 "属性" 或 "成员变量"(三种称呼都可以, 一般不会严格区分)。

2.属性的初始化

2.1默认值规则

        对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初值。在之前介绍过,不再过多介绍。

2.2构造方法规则

        每个类都有构造方法(构造器)。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。一旦定义构造方法,则不会自动补构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。使用方法如下:

public class Puppy{public Puppy(String name){//这个构造器仅有一个参数:nameSystem.out.println("小狗的名字是 : " + name ); }public static void main(String[] args){// 下面的语句将创建一个Puppy对象Puppy myPuppy = new Puppy( "tommy" );}
}

2.3定义时初始化规则

        定义时初始化不再介绍

2.4构造代码块规则

        在类的内部,在方法的外部直接使用一个大括号。这个就是构造代码块。

2.5执行顺序

        1)默认值规则

        2)定义时初始化和构造代码块按书写顺序

        3)构造方法规则

具体顺序请看下面的例子

public class InitOrder {public InitOrder() {System.out.println("6");}{System.out.println("3");}public int a = initA();{System.out.println("4");}public int b = initB();{System.out.println("5");}public int initA() {System.out.println("1");return 1;}public int initB() {System.out.println("2");return 2;}public static void main(String[] args) {InitOrder initOrder = new InitOrder();}}

3.this的用法

        this的用法主要有两种,如下:

1.起引用的作用,表示当前类

2.在一个构造方法中调用另外一个构造方法。

4.权限控制

        get方法和set方法分别用于控制权限,通过这两个方法可以实现对属性的读和写。具体的使用方法如下所示。

package oop.GetSet;public class Person {private String name;public String getName() {return name;}private String sex;public String getSex() {return sex;}public void setSex(String sex) {if(sex!="男"||sex!="男"||sex!="未知"){throw new RuntimeException("请输入“男”或“女”或“未知”!!!");}this.sex = sex;}private boolean alive;public boolean isAlive() {return alive;}
}

三、类的方法

        方法(method)用于描述一个对象的行为。Java中主要以实例方法的形式体现(说白了就是函数)。

方法分为两类

1.静态方法(类方法)加static修饰。

2.实例方法(普通方法)不加static修饰。

静态方法和实例方法的比较如下

静态方法 实例方法
方法内部

无this

不能访问属性

不能调用普通方法

有this

能访问属性

能调用普通方法

方法外部

可直接调用

不需要传this

对象的引用来访问

需要传this

四、实例化过程

        由类到对象的过程成为实例化过程,主要包含以下几个步骤

1.通过类中的信息来计算对象的内存大小,再由JVM虚拟机在堆区分配空间,然后进行默认的初始化(表现为属性全部是默认值)

2.执行初始化过程(不再赘述)

3.通过引用赋值(object name=xxxxx)

总结

1.变量的总结

生命周期 内存区域
局部变量 随方法 栈区

类变量

静态变量

静态属性

随类 方法区

实例变量

实例属性

属性

成员变量

随实例 堆区

2.对象的三个层次总结

1)概念层:现实生活中的一些对象(如学生、汽车等等)

2)逻辑层:对现实生活中的概念的抽象(状态表现为属性,行为表现为方法)

3)物理层:在内存中的形式

  相关解决方案