第二部分:java类与对象

2019-06-21  本文已影响0人  httpsbao

关于Java对象作为参数传递是传值还是传引用的问题

Java中@Override的作用

Java 访问权限修饰符public,private,protected和不写的区别

详解java中package与import
package:将本源文件中的接口和类纳入指定包中。源文件中若有包说明语句,则必须是第一个语句。
import:引入本源文件中需要使用的包。

一:数据成员

形式:[修饰符] 数据成员类型 数据成员名表
修饰符包括访问权限修饰符public、private、protected和非访问权限修饰符static、final等。
下面是类、数据成员和成员方法的访问控制符及其作用表格

数据成员与方法\类 public 缺省
public 所有类 包中类(含当前类)
protected 包中类(含当前类),所有子类 包中类(含当前类)
缺省(friendly) 包中类(含当前类) 包中类(含当前类)
private 当前类本身 当前类本身

下面对修饰符的非访问修饰符static、final做一些论述
用 static 修饰的数据成员:
1.用 static 修饰的数据成员不属于任何一个类的具体对象,而是属于类的静态数据成员的。特点如下:
(1)它被保存在类的内存区的公共存储单元中,而不是被保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
(2)可以通过类名加点访问它。
(3)static 类的数据成员仍属于类的作用域,还可以使用public static、private static、等进行修饰。修饰符不同,可访问的层次也不同。

2.静态数据成员初始化方法:
(1)可以由在定义时进行;
(2)可以有静态初始化器完成;

3.与构造方法不同,静态初始化器的特点如下:
(1)静态初始化器是由关键字 static 引导的一对花括号括起来的语句块,作用是在加载类时,初始化类的静态数据成员。构造方法用来对新创建的对象进行初始化。
(2)静态初始化器不是方法,没有方法名、返回值和参数表。
(3)静态初始化器是在它所属的类加载到内存时由系统调用执行的。而构造方法是在系统用 new 运算符产生新对象时自动执行的。

public class test{
    static int m;
    //static int m=100;用户在定义时进行
    static{//静态初始化器
        m=100;
    }
    public static void main(String args[]){
        test t=new test();
        System.out.println("输出m:"+t.m);
    }
}

用 final 修饰的数据成员:
如果一个类的数据成员用 final 修饰符修饰,则这个数据成员被限定为最终数据成员。最终数据成员可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他部分赋值,它的值在程序的整个执行过程中是不能改变的。也就是说,用 final 修饰符修饰的数据成员是标识符常量。
用 final 修饰符说明常量时,需要注意以下几点:
(1)需要说明常量的数据类型并指出常量的具体值。
(2)若一个类有多个对象,而某个数据成员是常量,最好将此常量声明为 static ,即用static final 两个修饰符修饰它,可以节省空间。
(3)final修饰的数据成员属于对象,其值一经确定,不再改变。
用static修饰的数据成员属于类,类似于一个全局变量的作用。

二:成员方法

相当于子程序,函数。

1.成员方法的分类:

从成员方法的来来源看:
(1)类库成员方法,由 java 类库提供,需要按照 java 提供的调用格式调用这些成员方法。
(2)用户自定义的成员方法。
从成员方法的形式看:
(1)无参成员方法
(2)带参成员方法

2.声明成员方法的格式:

在 java 程序中,成员方法的声明只能在类中进行,格式如下:

//成员方法头
[修饰符]返回值的类型 成员方法名(形式参数表) throw[异常表]{
    //方法体
    说明部分
    执行语句部分
}

成员方法头中的各项说明如下:
(1)修饰符。
访问权限修饰符:
作用是指出满足什么条件时该成员方法可以被访问。包括:
公共访问修饰符public、私有访问控制符private、保护访问控制符protected等
非访问权限修饰符:
作用是指明成员方法的使用方式。包括:
静态成员方法修饰符static、最终成员方法修饰符final、本地成员方法修饰符native、抽象成员方法修饰符abstract等
(2)返回值的类型。
有返回值 int、float等
无返回值void
(3)成员方法名。
即标识符。按照惯例,方法名是一个小写的动词或单词,若为多个单词,则第一个动词小写,后续单词的第一个字母大写。
(4)形式参数表。
有参格式:(形参类型1 形参名1,形参类型2 形参名2...)
无参格式:()
(5)throw [异常表]。
它指出当该方法遇到方法的设计者未曾想到的问题时如何处理。

3.方法体中的局部变量

注意:
(1)在方法体内定义的变量是局部变量,生存期和作用域是在本方法内。局部变量只在本方法内有效、可见。离开本方法后,这些变量被自动释放。
(2)方法体内定义变量,变量前不能加修饰符。
(3)局部变量在使用前必须明确赋值。
(4)在一个方法内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,这种复合语句也被称为程序块。

4.成员方法的返回值

格式: return 表达式;
或: return(表达式);
表达式可以是常量、变量、对象等,表达式的数据类型必须与成员方法头中给出的“返回值的类型一致”。

5.形参与实参

实参变量对形参变量的数据传递是“值传递”,只能由实参传递给形参,而不能由形参传给实参。程序中执行到引用成员方法时,java把实参值拷贝到一个临时的存储区(栈)中,形参的任何修改都在栈中执行,当退出该成员方法时,java自动清除栈中的内容。

6.成员方法引用方式:

1.方法语句:如:add(a,b);
2.方法表达式:如:f=2+add(f1,f2);
3.方法作为参数:如:add(a,add(f1,f2));
4.通过对象来引用:如:引用变量名.方法名;
注意:
1.如果被引用的方法在本文件中,并且是本类的方法,则可以直接引用。
2.如果被引用的方法在本文件中,但不是本类的方法,则要由类的修饰符与方法的修饰符来决定是否能引用。
3.如果被引用的方法不是本文件的方法而是java类库的方法,必须在文件的开头用import命令将引用有关库方法所需的信息写入本文件中。
4..如果被引用的方法是用户在其他文件中自己定义的方法,则必须通过加载用户包的方式来引用。

7.用static修饰的静态方法

(1)static方法是属于整个类的,它在内存中的代码段随着类的定义被分配和装载;不用static修饰符限定的方法,是某个具体类的对象的方法当这个对象创建时在对象的内存中拥有这个方法的专用代码段。
(2)引用静态方法:可以使用与对象关联的引用变量名作为前缀,也可以使用类名作为前缀。
(3)static方法只能访问到static数据成员,不能访问非static数据成员,但非static方法可以访问static数据成员。static方法只能访问到static方法,不能访问非static方法,但非static方法可以访问static方法。
(4)static方法不能被覆盖。即:这个类的子类不能有相同名及相同参数的方法。
(5)main方法是静态方法。在java的每个Application程序中,都必须有且只能有一个main方法,它是Application程序运行的入口点。

8.用final修饰的最终方法

在面向对象的程序设计中,子类可以利用重载机制修改从父类那里继承来的某些数据成员及成员方法。用final修饰符修饰的方法称为最终方法,如果类的某个方法被final修饰符所限定,则该类的子类就不能覆盖父类的方法,即不能再重新定义与此方法同名的自己的方法,仅能使用从父类继承来的方法。使用final修饰方法,是为了任何继承类修改此方法。保证程序的安全性。

9.用native修饰的本地方法(暂没掌握)

使用此类方法的目的是将其他语言(如C、C++、FORTRAN
、汇编语言等)嵌入到java语言中。native方法特别注意平台问题。

上一篇下一篇

猜你喜欢

热点阅读