Java零散知识点记录——类与对象

  1. 类的一般结构:
[类修饰符] class 类名称
{
	[修饰符] 数据类型 成员变量名称;
	...
	[修饰符] 返回值的数据类型 方法名(参数1,参数2,...)
	{
		语句序列;
		return [表达式];
	}
	...
}

[]中的修饰符是可选项,是一组限定类、成员变量和成员方法是否可以被程序里的其他部分访问和调用的控制符。

  1. 类的修饰符及含义
修饰符 含义
public 将一个类声明为公共类,可以被任何对象访问
abstract 将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示它不能被其他类所继承
(缺省) 无修饰符时,则表示只有在相同的包中的对象才能使用这样的类
  1. 成员变量
    一个类的成员变量描述了该类的内部信息,一个成员变量可以是简单变量,也可以是对象、数组等其他数据结构型变量。格式:
[修饰符] 变量类型 变量名 [=初值];

修饰符的含义:

修饰符 含义
public 公共访问控制符。变量为公共,可以被任何对象的方法访问
private 私有访问控制符。该变量只允许自己类的方法访问,其他任何类及其子类中的方法均不能访问此变量
protected 保护访问控制类。该变量只可能被它自己的类及其子类或同一包中的其他类访问,在子类中可以覆盖该变量
(缺省) 无访问控制符时,只能在同一个包中的类可以访问,其他包中的不可
final 最终修饰符。该变量的值不能被修改
static 静态修饰符。该变量可被所有对象共享
transient 过渡修饰符。系统保留
volidate 易失修饰符。该变量可同时被几个线程控制和修改
  1. 成员方法
    用于对类的成员变量进行操作,类内部功能的机制,是类与外界进行交互的重要窗口。格式:
[修饰符] 返回值的数据类型 方法名(参数列表)
{
	语句序列;
	return [表达式];
}

若方法没有返回值,则返回值的数据类型应为void,且return语句可以省略。
修饰符的含义:

修饰符 含义
public 公共访问控制符。该方法可以被任何对象的方法访问
private 私有访问控制符。只允许自己的类方法访问,其他任何类(包括子类)中的方法均不能访问
protected 保护访问控制符。该方法只可能被它的类及其子类或同一包中的其他类访问
(缺省) 无法访问控制符,同一包中的类可以访问,其他包中的不可
final 最终修饰符,该方法不能被重载
static 静态修饰符。该方法不需要实例化一个对象即可调用
abstract 抽象修饰符。该方法只声明方法头,没有方法体,抽象方法需在子类中被实现
synchronized 同步修饰符。在多线程程序中,该修饰符用于在运行前对所属方法加锁,防止其他线程访问,运行结束后解锁。
native 本地修饰符。其方法体用其他语言在程序外编写。
  1. 成员变量和局部变量的区别:
  • 从语法形式上:成员变量属于类,而局部变量是方法中定义的变量或方法的参数,成员变量可以被public,private,static等修饰,而局部变量则不能被访问修饰符及static所修饰;两者均可被final修饰
  • 从变量在内存中存储的方式看:成员变量是对象的一部分,对象是存储在堆内存的,局部变量是存在栈内存的
  • 从变量在内存中的生存时间上看,成员变量是对象的一部分,随着对象的创建而存在,局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。
  • 成员变量若没有被赋初值,则会自动初始化默认为0,局部变量不会被自动赋值,需显式赋值才能使用
  1. 对象的创建与使用
    对象之间靠相互传递消息而相互作用,消息传递的结果是启动方法,完成一些行为或修改消息的对象的属性。对象一旦完成了它的工作,就将被销毁,所占的资源将被系统回收以供其他对象使用。
    一个对象的生命周期是:创建=》使用=》销毁
  2. 创建类的对象步骤:
    (1)声明指向“由类所创建的对象”的变量
    (2)利用new运算符创建新的对象,并指派给前面所创建的变量
Cylinder volu = new Cylinder(); //声明并创建新的对象,并让volu指向该对象

以类名Cylinder作为变量类型在栈内存中定义一个变量volu,用来指向通过new运算符在堆内存中创建的一个类Cylinder类的实例对象。

  1. 对象的使用,格式:
对象名.对象成员
  1. 匿名对象
    当一个对象被创建之后,在调用该对象的方法时,可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象。如:
new Cylinder().setCylinder(2.5,5,3.14);

使用匿名对象两种情况:
(1)如果一个对象只需进行一次方法调用,就可以使用匿名对象
(2)将匿名对象作为实参传递给一个方法调用,如一个程序中有一个getSomeOne()方法要接受一个MyClass类对象作为参数,方法的定义如下:

public static void getSomeOne(MyClass c)
{
	...
}

可通过以下调用该方法:

getSomeOne(new Myclass());

猜你喜欢

转载自blog.csdn.net/tozeroblog/article/details/89218767