`

Classes and Objects :类和对象(1)

 
阅读更多

类的定义:修饰符,class,类名,extends,逗号分隔的implements,类体{}
规范的类名:首字母要大写,以后每个单词首字母都大写

字段的定义:修饰符,类型,字段名
按照封装的思想,字段通常定义为private,然后提供public方法来访问和修改他们

方法的定义:修饰符,返回类型,方法名,(参数列表,逗号分隔,或为空),异常声明throws,方法体{}
方法的signature(签名)包括方法名称,参数数量,类型,顺序
所以只是返回类型不同的两个方法是通不过编译的
规范的方法名:首单词为动词,首字母小写,以后每个单词为动词或形容词或名词,首字母大写

构造方法用于生成对象时做一些默认的处理,但名字是类名,而且没有返回类型
构造可以有多个,注意方法的签名是区分方法的唯一途径
可以不写,编译器自动提供默认构造,没有参数,并会调用父类的无参构造
也可以手动编写,调用自己的其他构造或父类其他构造
不调用构造是不可能生成对象的,如果最上面的父类也没有构造,编译会报错,当然Object是有的

Parameters通常指方法声明的形参,Arguments通常指实际传入方法的实参
Java不允许把方法名作为参数传入另一个方法,但可以使用lambda表达式

可以指定一个未知数量的参数列表,但要是同一类型,会接受0到n个,而且只能是参数列表的最后几个参数

public PrintStream printf(String format, Object... args)

会用数组方式传入,实际也可以直接传入一个数组

方法声明的参数名可以跟类的字段重名,会覆盖掉
在块中的局部变量也是这样,比如循环体中
要访问那个字段要用全名,this.XX

方法的参数如果传递的是原始类型,则始终是按值传递的

形参的修改不会影响实参,方法返回时所有形参值不被保留
如果传递的是对象类型,其实也是按值传递的,但传递的是一个引用,一个地址

对这个地址上的对象进行操作会引起实际对象的更改

public void moveCircle(Circle circle, int deltaX, int deltaY) {
    // 会更改传入对象,因为基于这个地址操作
    circle.setX(circle.getX() + deltaX);
    circle.setY(circle.getY() + deltaY);
       
    // 不会更改,只是改变了一个地址
    circle = new Circle(0, 0);
}


生成对象:一般说对象的生成就是指对象的实例化
new的作用:为这个对象分配内存空间,返回这个对象的地址,当然也要调用类的构造从而初始化这个对象
new后面需要跟一个参数,指明哪个类,以及调用哪个构造

Rectangle rectTwo = new Rectangle(50, 100);

并不一定要赋给一个变量,可以new完直接使用的

int height = new Rectangle().height;


在类中直接访问实例变量是报错的,因为他们只存在于某个对象中

JRE检测到某个对象不会再被调用时,会删除这个对象,释放所占的内存资源,这个过程就叫garbage collection
变量在作用域外面时会丢失,将成为垃圾搜集的目标
也可以手动置这个变量为null
garbage collector(垃圾搜集器)来自动完成这个工作

方法返回的方式:

执行完了所有语句,自动返回

遇到return

抛出了异常

 

方法的返回类型可以是某个类或者接口,这时候返回的那个必须是他的对象或者子类对象或者接口的实现类

这称为covariant return type

 

在方法或构造方法中,可以使用this,代表当前对象,也就是这个方法到底是哪个对象调用的

不能在静态方法中使用,因为静态方法不需要任何对象就可调用

可以在某个构造中用this(..)调用其他构造,但要在首行

 

类只有两种修饰符,public和默认,类成员的修饰符则可以有四种

protected表明除了本包可访问,别的包的子类也可访问

通常来说不要让所有的都是public的,除了某些常量

除了某个确定的目的,尽量缩小变量的访问权限(封装思想)

 

访问类变量推荐用类名+变量名,用对象名也行,但可读性较差

 

方法也可以是static的,无需实例化就可调用

方法也可以使final的,表示不能被子类覆盖

在对象实例化,初始化时只能调用final方法,否则编译报错

 

 常量在运行时是无法更改的,更改会编译报错

static final double PI = 3.141592653589793;

 

如果是原始类型或String,编译器会在编译时把每个出现的地方都用这个值替代,compile-time constant.(编译时常量)

如果更改,只能重新编译一次

如果这个常量是个对象,那只是这个地址不可修改,对象是可以任意修改的,这样通常没有意义

 

static初始化块,会在类的实例化时只运行一次,通常用来初始化字段

可以位于类体中任何位置,也可以有多个,会按顺序执行

 

如果多个构造都要进行同样的实例变量初始化,可以放到 非static初始化块 里

编译器会在每个构造里都拷贝一份

 也可以写一个final方法用来初始化,然后在各个构造里调用,这个方法不会被覆盖,是可信赖的

 

可以用assert(true);来做一个检测,运行要用java -ea Test

 

分享到:
评论

相关推荐

    CC Classes And Objects:缩减 N 个简明类/对象-开源

    在本案例中,"CC Classes And Objects:缩减 N 个简明类/对象"是一个开源项目,其目标是为处理网页请求创建高效的类和对象。通过仅包含实际使用的函数,项目旨在减少冗余和提高代码的可维护性。 首先,让我们深入...

    14讲类和对象.zip_Classes and objects

    1. **类的概念**:类是面向对象编程的基础构造单元,它是一种自定义的数据类型,可以封装数据(成员变量)和操作数据的方法(成员函数)。类是抽象的,它定义了对象的模板或者蓝图,规定了对象应该有的属性和行为。 ...

    Classes and Objects

    这些对象通过类定义,类定义了对象的属性和方法。通过封装原则,对象之间的交互仅限于通过方法调用进行,而不是直接访问内部状态,从而确保了系统的稳定性和安全性。 #### 第二节:对象模型 PHP5引入了一个新的...

    Programming 1 -Classes and Objects.rar_intro_c#_objects

    "Programming 1 - Classes and Objects" 这个主题主要涵盖了C#中的类(Classes)和对象(Objects)的概念,这些都是理解C#和许多其他面向对象语言的基础。 1. **类(Class)**: 类是C#中的蓝图或模板,用于创建...

    软件设计(II)教学课件:Chapter5 Classes and Objects.ppt

    本教学课件——Chapter5 Classes and Objects.ppt详细介绍了如何定义和使用类与对象,以及它们的相关操作。 首先,让我们理解什么是对象。对象是对现实世界中实体的抽象,它具有状态(State)和行为(Behavior)。...

    What Are Objects and Classes

    在编程领域,对象和类是面向对象编程(Object-Oriented Programming, OOP)的核心概念。面向对象编程是一种设计和实现软件的方式,它基于“对象”的概念,通过封装、继承和多态等特性来提高代码的可重用性和可维护性...

    Class-6--Classes-And-Objects.rar_objects

    在Java编程语言中,"Class-6--Classes-And-Objects.rar_objects"这一主题主要聚焦于类(Classes)和对象(Objects),这是面向对象编程(OOP)的基础。在这个压缩包中,包含的文档可能详细解释了这些核心概念。下面...

    Java Methods-Objects and Classes.ppt

    Java Methods-Objects and Classes 本资源主要介绍了 Java 语言中的对象和类别相关知识。下面是从文件中提取的重要知识点: 一、面向对象编程(Object-Oriented Programming) * 面向对象编程将应用程序看作是一...

    Classes-and-Objects:Java应用程序来计算运费

    在Java编程语言中,类(Classes)和对象(Objects)是核心概念,它们构成了面向对象编程的基础。这个“Classes-and-Objects: Java应用程序来计算运费”主题深入探讨了如何使用这些概念来创建一个实用的程序,该程序...

    PHP实战:对象,设计,敏捷(PHP in Action :Objects, Design, Agility )

    4 了解对象和类 (Understanding objects and classes) 5 了解类之间的关系 (Understanding class relationships) 6 面向对象原理 (Object-oriented principles) 7 设计模式 (Design patterns) 8 怎样设计的问题:...

    Classes_and_Objects.pdf

    在这篇文章中,我们将探讨面向对象编程(OOP)的一些基本概念,包括类、对象、继承、多态性、抽象类和接口。这些概念是 C# 编程语言的基础,我们将通过实例代码和解释来阐述这些概念。 类和对象 在 OOP 中,类是一...

    lesson_04_01 Classes and Objects 1 EXAMPLES.rar_C/C++__C/C++_

    本课程"lesson_04_01 Classes and Objects 1 EXAMPLES"着重讲解了如何定义类、创建对象以及如何利用类来组织和管理代码。通过对这个压缩包的学习,你将深入理解C++中的类和对象的概念,以及它们在实际编程中的应用。...

    Inside MFC: Handle Maps and Temporary Objects

    本文将深入探讨MFC(Microsoft Foundation Classes)中的句柄映射(handle maps)机制以及临时对象(temporary objects),解释这句话的具体含义,并介绍这些概念是如何帮助MFC实现统一的方法来从对应的C语言句柄获取C++...

    C程序设计教学课件:CHAPTER5CLASSES.pptx

    6. 类与对象(Classes and Objects) 类在C++中是一种数据类型,它定义了对象的属性和行为。对象是类的实例,当声明一个类的对象时,就创建了一个特定类的实例。类定义了对象的数据结构(数据成员)和操作这些数据...

    Lab04-Classes-Objects

    6. **继承**:类可以继承其他类,从而实现代码重用和类层次结构。使用`: base_class`语法表示继承,例如: ```csharp public class SportsCar : Car { // ... } ``` `SportsCar`现在拥有`Car`的所有属性和方法...

    Java教学详细内容课件.ppt

    模块3:Classes and Objects(类和对象),涵盖了Java中的类和对象概念,包括类的声明、对象的创建、继承、多态性等内容。 模块4:Extending Classes(扩展类),涵盖了Java中的继承机制,包括单继承、多继承、接口...

    008-classes-and-objects-iktaecheon:008 Classes-and-objects-iktaecheon由GitHub Classroom创建

    作业#008对象和类(满分10) 目标: 创建一个对象类 描述实例化的含义 创建对象方法和属性 想像一辆汽车。 我们都知道汽车是什么样子,因为有一辆原型车。 它有4个车轮,座椅和一个方向盘。 但是,我们在考虑通用...

    sap abap用户指南

    - Classes and Objects:面向对象编程的基础,包括类定义、对象实例化、继承、多态等。 - Interfaces:定义一组方法,类可以实现接口来遵循特定规范。 - Events:允许对象之间通信和响应特定事件。 4. **ABAP ...

    实战SAP程序开发——从实例学SAP.ABAP编程

    - Classes and Objects:理解类和对象的概念,以及如何创建和实例化。 - Inheritance and Polymorphism:深入学习继承和多态性,提升代码复用性和灵活性。 - Interfaces:使用接口实现抽象和规范,提高代码可维护...

Global site tag (gtag.js) - Google Analytics