首页 > 编程语言 >Java从入门到精通-类和对象(一)

Java从入门到精通-类和对象(一)

时间:2023-09-10 15:01:16浏览次数:70  
标签:精通 Java 入门 构造方法 成员 class 方法 public name

0. 类和对象

Java从入门到精通-类和对象(一)_成员方法

1. 面向对象概述

Java从入门到精通-类和对象(一)_成员变量_02

Java面向对象编程(Object-Oriented Programming,OOP)是一种强大的编程范式,它基于对象、类、封装、继承和多态等核心概念。这种编程范式使得代码更加模块化、可维护、可重用和可扩展。

1.1 对象和类

在Java中,一切都是对象。对象是程序中的基本单位,它代表现实世界中的实体或概念。例如,我们可以考虑一个简单的汽车对象:

class Car {
    String color;
    int speed;
    
    void start() {
        System.out.println("汽车启动了!");
    }
    
    void accelerate() {
        System.out.println("汽车加速中...");
    }
}

在示例中,我们定义了一个名为Car的类,它具有颜色(color)和速度(speed)这两个属性,以及两个方法(start()accelerate())。这个类描述了汽车的特征和行为。

1.2 封装

封装是OOP的一个关键概念,它指的是将数据和方法封装在类内部,以保护数据的安全性。只有类的方法可以访问和修改类的数据,外部代码无法直接访问或修改数据。这提高了代码的可维护性和安全性。让我们看一个封装的示例:

class BankAccount {
    private double balance;
    
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }
    
    public double getBalance() {
        return balance;
    }
}

在示例中,balance属性被声明为private,这意味着只有BankAccount类的方法才能访问它。外部代码必须通过公共方法(deposit()getBalance())来操作和获取账户余额。

1.3 继承

继承是OOP的另一个关键概念,它允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法。子类可以重用父类的代码,并且可以添加自己的特定属性和方法。这有助于代码重用和建立层次化结构。示例如下:

class Animal {
    void eat() {
        System.out.println("动物吃东西");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("狗在叫");
    }
}

在示例中,Animal类定义了eat()方法,而Dog类继承了Animal类,并添加了自己的bark()方法。这使得Dog类既可以调用eat()方法,也可以调用bark()方法。

1.4 多态

多态是OOP的另一个强大概念,它允许不同类的对象对相同的消息(方法调用)作出不同响应。多态允许对象根据其实际类型执行不同的行为。示例如下:

class Shape {
    void draw() {
        System.out.println("绘制形状");
    }
}

class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("绘制圆形");
    }
}

class Square extends Shape {
    @Override
    void draw() {
        System.out.println("绘制正方形");
    }
}

在示例中,Shape类定义了draw()方法,而CircleSquare类都继承了Shape类并重写了draw()方法。这意味着可以创建ShapeCircleSquare对象,并调用它们的draw()方法,它们会根据实际类型执行不同的绘制行为。

2. 类

Java从入门到精通-类和对象(一)_构造方法_03

在Java中,类是面向对象编程的基本构建块之一。类定义了对象的结构和行为。让我们深入了解类的概念,包括成员变量、成员方法、权限修饰符、局部变量、局部变量的有效范围、this关键字以及类的构造方法。

2.1 类的基本结构

一个类的基本结构通常包括以下部分:

public class ClassName {
    // 成员变量(属性)
    dataType variable1;
    dataType variable2;
    
    // 构造方法
    public ClassName(parameters) {
        // 构造方法的初始化代码
    }
    
    // 成员方法
    returnType methodName(parameters) {
        // 方法体
    }
    
    // 其他成员方法
}

1. 成员变量(属性):

  • 成员变量是类的属性,用于存储对象的状态信息。
  • 定义了类的特征或数据。

2. 构造方法:

  • 构造方法是一个特殊的方法,用于初始化对象的属性。
  • 在创建对象时自动调用,通常用于执行必要的初始化操作。
  • 构造方法的名称与类名相同。

3. 成员方法:

  • 成员方法定义了对象可以执行的操作。
  • 定义了类的行为或操作。

2.2 成员变量

成员变量是类的属性,它们用于存储对象的状态信息。在类中声明成员变量时,可以使用不同的权限修饰符,如privatepublicprotected等,以控制其可访问性。例如:

public class Student {
    // 成员变量
    public String name; // 公共成员变量
    private int age;    // 私有成员变量
    protected double gpa; // 受保护的成员变量
}

2.3 构造方法

构造方法是用于初始化对象的特殊方法。每个类可以有一个或多个构造方法,根据不同的参数列表进行重载。构造方法的名称必须与类名相同,它没有返回值。

public class Student {
    private String name;
    private int age;

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

在示例中,Student类有一个构造方法,接受姓名和年龄作为参数,用于初始化学生对象的属性。

2.4 成员方法

成员方法定义了对象可以执行的操作。它们用于定义类的行为或操作。成员方法的声明包括返回类型、方法名、参数列表和方法体。

public class Calculator {
    // 成员方法:加法
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    // 成员方法:除法
    public double divide(double dividend, double divisor) {
        if (divisor != 0) {
            return dividend / divisor;
        } else {
            System.out.println("除数不能为零");
            return Double.NaN; // 返回NaN表示不是一个数字
        }
    }
}

在示例中,Calculator类定义了两个成员方法,add()divide(),分别用于执行加法和除法操作。

2.5 权限修饰符

Java提供了不同的权限修饰符,用于控制成员变量和成员方法的可访问性:

  • public:可以在任何地方访问。
  • private:只能在类内部访问。
  • protected:只能在同一包内或子类中访问。
  • 默认(无修饰符):只能在同一包内访问。

2.6 局部变量和有效范围

局部变量是在方法或代码块内部声明的临时变量。它们的作用域仅限于声明它们的代码块内部。例如:

public class Example {
    public void someMethod() {
        int x = 10; // 局部变量,只能在someMethod()方法内部访问
    }
}

2.7 this关键字

this关键字用于引用当前对象的引用。它可以用于区分成员变量和局部变量,特别是在成员方法中。例如:

public class Person {
    private String name;

    public void setName(String name) {
        // 使用this关键字来引用成员变量
        this.name = name;
    }
}

在示例中,使用this.name来引用成员变量,以区分成员变量和方法参数的name

标签:精通,Java,入门,构造方法,成员,class,方法,public,name
From: https://blog.51cto.com/u_15747017/7425483

相关文章

  • WebPack入门
    什么是webpack简单地说就是要一个web的打包工具,将项目所需要的资源进行打包处理。安装webpack很简单,首先是初始化一个node.js的项目npminit之后就是安装webpack以及webpack-clinpmiwebpackwebpack-cliD初试打包我们在src/js目录下分别新建两个js文件,分别执行加法和......
  • 无涯教程-JavaScript - COUPPCD函数
    描述COUPPCD函数返回一个数字,该数字表示结算日期之前的上一个息票日期。语法COUPPCD(settlement,maturity,frequency,[basis])争论Argument描述Required/OptionalSettlement证券的结算日期。证券结算日期是指在发行日期之后将证券交易给买方的日期。Required......
  • 深入理解Java if判断:提升编程效率的关键步骤
    Java中的if判断语句是一种条件语句,用于根据指定条件执行不同的代码块。if语句通常由一个布尔表达式和一个或多个语句组成。如果布尔表达式的结果为true,则执行if语句后面的语句;否则,跳过if语句后面的语句。下面是一个if语句的示例:intx=10;if(x>5){System.out.println("x......
  • Java中equals和==的区别
    ====比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。1、比较的是操作符两端的操作数是否是同一个对象。2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。3、比较的是地......
  • 无涯教程-JavaScript - COUPNCD函数
    描述COUPNCD函数返回一个数字,该数字表示结算日期之后的下一个息票日期。语法COUPNCD(settlement,maturity,frequency,[basis])争论Argument描述Required/OptionalSettlement证券的结算日期。证券结算日期是指在发行日期之后将证券交易给买方的日期。Required......
  • 基于java的高校社团管理系统设计与开发-计算机毕业设计源码+LW文档
    一、研究的背景意义目前高校大学生的数量越来越多,学生管理越来越复杂。在学习期间,也不能仅仅局限于理论知识,高校领导积极组织各种社团,帮助学生培养兴趣,提高高校文化水平,鼓励和帮助部分老师和优秀学生组建社团。学校社团可以根据某一文化主题或者专业技能进行分类,学生可以选择不同......
  • 无涯教程-JavaScript - COUPDAYS函数
    描述COUPDAYS函数返回包含结算日期的息票期限内的天数。语法COUPDAYS(settlement,maturity,frequency,[basis])争论Argument描述Required/OptionalSettlement证券的结算日期。证券结算日期是指在发行日期之后将证券交易给买方的日期。RequiredMaturity证券......
  • 深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
    当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括System.arraycopy()、Arrays.copyOf()和Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探讨这些方法,以便您了解何时使用它们以及如何正确使用它......
  • JAVAOOP
    课程目标1.【理解】什么是面向对象2.【理解】类和对象的关系3.【掌握】类的定义和使用4.【掌握】三大特征之封装5.【掌握】this关键字的使用面向对象概述什么是面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的......
  • JVM调优篇:探索Java性能优化的必备种子面试题
    JVM内存模型首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区(1.7之后更改为元空间,并直接使用系统内存)。正常堆内存又分为年轻代和老年代。在Java虚拟机中,年轻代用于存......