Java类的特征

2019-12-14  本文已影响0人  David_Rao

包的使用、访问权限
方法重载
静态成员
this关键字

补充
在数字后面加上f表示该数字是float型的,如果不写的默认的是double型。同理,加上l表示long型,如果不写默认int型。

1、包

Java使用包(package) 对类进行组织和管理。

1.1、包的作用

  1. 查找定位类
  2. 避免命名冲突
  3. 便于发布软件
  4. 保护类

1.2、包的命名习惯

  1. 包是有层次关系的, 一个包中还可以有包, 称为子包。
  2. 包名需要时唯一的, Java建议采用Internet域名的倒序作为包的前缀。
  3. Java中,包名与文件系统的目录结构一一对应。
  4. 把类添加到指定包中, 只需在源程序的最前端加上
package  包名;

2、访问权限

详细见我的文章——Java修饰符
https://www.jianshu.com/p/d1715b417ea5

2.1、数据域封装

  1. 作用:把对数据域的直接访问变成间接访问
  2. 实现:
    步骤一、使用private修饰数据域
private String name;

步骤二、为每个数据域创建访问器方法和修改器方法

public String getName() {
    return name;
}
public void setName(String name){
    this.name = name;
}

2.2、修饰方法

  1. 只在本类内部使用的方法使用private。
  2. 提供给其他类使用的方法使用public 或其他访问权限。
  3. 默认构造方法的访问权限与类的访问权限相同。

3、this关键字

  1. 在类的构造方法中使用, 调用本类的其他构造方法。
// 如果使用该语句, 必须在构造方法的第一句
this(实参表)
  1. 在类的构造方法和实例方法中使用,代表对当前对象的引用。
// 每个构造方法和实例方法中都隐含有一个this引用
this.实例变量名
this.实例方法名(实参表)

4、实例成员与静态成员

  1. static修饰是静态成员
    静态成员变量,静态方法

  2. 未用static修饰是实例成员
    实例成员变量,实例方法

  3. 静态成员变量
    静态变量在类加载到内存时分配内存空间,所有对象共享静态变量。

类名.静态变量名
  1. 实例成员变量
    实例变量只有其对象创建后才会分配内存空间,不同对象的实例变量互不影响。
对象名.实例变量名
  1. 静态方法
    类加载到内存时,为静态方法分配内存空间。
类名.静态方法()
  1. 实例方法
    ①当创建类的对象时,实例方法才会分配入口地址。
    ②多个对象的同一实例方法的入口地址是共享的。
对象名.实例方法()
public class StaticDemo {
    // 实例数据域
    int instanceData; 
    // 静态数据域
    static int staticData;   
    // 实例方法
    int instanceMethod() {  
        return instanceData;
    }
    // 静态方法
    static int staticMethod() {  
        return staticData;
    }
}

5、静态初始化器与实例初始化器

初始化器是直接在类中定义的用一对{}括起来的语句组。

  1. 静态初始化器使用static关键字修饰,用来初始化静态变量。
  2. 实例初始化器没有修饰关键字,用来初始化实例变量。
  3. 静态初始化器的执行:类首次加载到内存时,首先是静态数据域变量的变量初始化;然后按排列顺序执行类中staic初始化器。
  4. 在构造方法第一条语句执行之前,按排列顺序执行类中的实例初始化器,然后执行构造方法中的剩余语句。

6、方法重载

  1. 静态多态:基于重载(overload)实现
  2. 方法名称相同,形参列表不同

7、对象的应用

  1. Java的变量分为基本类型变量和引用类型变量。
  2. 基本类型变量存放在栈内存中。
  3. 引用类型变量在栈内存中存放其引用对象的地址。其“真身”在堆内存中。

7.1、对象的赋值与复制

赋值:两个引用变量之间进行赋值,赋值的是地址,使2个引用变量引用同一对象。

Circle c1 = new Circle();
Circle c2 = c1;      // 使c2和c1引用同一对象

复制:使用自定义类的clone方法。

7.2、对象的比较

  1. 使用 “==”
    比较的是地址
Circle c1, c2;
c1 == c2   // 两个引用指向同一对象结果为true,否则为false
  1. 调用API。
    ①String对象的equals方法是比较字符串的内容是否相同。Arrays对象的equals方法是比较数组的元素是否相同。
    ②除String对象外,Arrays对象外,其它对象的equals方法依然是比较地址是否相同
Arrays.equals(array1, array2);          // 比较2个数组
Arrays.deepEquals(array1, array2); // 深度比较2个数组
String s1, s2;
s1.equals(s2); //比较2个字符串

7.3、引用变量作为方法的返回值

// 方法定义
public Circle createACirlce(double radius) {
    Circle temp = new Circle();
    return temp;   //返回对象的地址
}
// 方法调用
Circle c = createACircle(10.0);  // c得到返回的对象地址

7.4、对象的组合

  1. 一个类的成员变量可以是Java允许的任何类型,当然也包括其它类的对象类型。
  2. 例如类A使用类B的对象作为成员变量,则A的对象把B的对象作为组成部分。称为:A has-a B。
上一篇 下一篇

猜你喜欢

热点阅读