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

本文详细介绍了面向对象编程中的类和对象的基本概念,包括属性的定义、初始化规则、构造方法、this的使用以及权限控制。通过实例解析了属性的默认值、构造代码块的执行顺序,并探讨了类的方法。此外,还讨论了对象从类到实例化的整个过程,总结了变量的生命周期和对象的三个层次。内容深入浅出,适合初学者理解面向对象编程的基础知识。
摘要由CSDN通过智能技术生成

目录

前言

一、基本解释

二、类的属性

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){
      //这个构造器仅有一个参数:name
      System.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)物理层:在内存中的形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值