十.类与对象

十.类与对象

1) 一般类

1.实例变量与类变量

用关键字static修饰的是类变量
而不用的是实例变量

2.实例方法与类方法

用关键字staitic的是类方法
而不用的事实例方法

3.几个值得注意的方法

1.对成员变量的操作只能放在方法中,方法可以对成员变量和该方法中声明的局部变量进行操作。在声明成员变量是可以同时赋予初值。
2.实例方法既能对类变量操作又能对实例变量操作,而类变量只能对类变量进行操作。
3.一个类中的方法可以互相调用,实例方法可以调用这个类中的其他方法;类中的类方法只能调用这个类中的方法,不能调用实例方法。

4.对象
5.static关键字

实例变量与类变量的区别

所有对象共享类变量,类变量与类有关与对象无关

实例方法与类方法的区别
1.对于类中的类方法,在该类加载到内存时,就分配了相应的入口地址,从而类方法不仅可以被类创建的所有对象调用执行,也可以直接通过类名调用。类方法的入口地址在程序退出时才被取消。
2.类中的类方法只能调用这个类中的方法,不能调用实例方法是因为在创建对象之前,实例成员还没有分配内存,而且实例方法也没有入口地址。

6.this关键字

this时Java中的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。

1.在构造方法中使用this

当this出现在类的构造方法中时,代表该构造函数所创建的对象。

可以省略this

2.在实例方法中使用this

代表正在调用该方法的当前对象。

可以省略this

2) 包

在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。有时,开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以便于管理。Java 为了解决上述问题,提供了包机制。

包允许将类组合成较小的单元(类似文件夹),它基本上隐藏了类,并避免了名称上的冲突。包允许在更广泛的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类。

包的 3 个作用如下:
1.区分相同名称的类。
2.能够较好地管理大量的类。
3.控制访问范围。

1.系统包

在 Java 语言中,开发人员可以自定义包,也可以使用系统包,常用的系统包如表所示。

说明
java.langJava 的核心类库,包含运行 Java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、异常处理和线程类等,系统默认加载这个包
java.ioJava 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等
java.util包含如处理时间的 Date 类,处理动态数组的 Vector 类,以及 Stack 和 HashTable 类
java.awt构建图形用户界面(GUI)的类库,低级绘图操作 Graphics 类、图形界面组件和布局管理(如 Checkbox 类、Container 类、LayoutManger 接口等),以及用 户界面交互控制和事件响应(如 Event 类)
java.awt.image处理和操纵来自网上的图片的 java工具类库
java.wat.peer很少在程序中直接用到,使得同一个 Java 程序在不同的软硬件平台上运行
java.net实现网络功能的类库有 Socket 类、ServerSocket 类
java.lang.reflect提供用于反射对象的工具
java.util.zip实现文件压缩功能
java.awt.datatransfer处理数据传输的工具类,包括剪贴板、字符串发送器等
java.sql实现 JDBC 的类库
java.rmi提供远程连接与载入的支持
java. security提供安全性方面的有关支持
2.自定义包
1. 包的声明

为了声明一个包,首先必须建立一个相应的目录结构,子目录与包名一致,然后在需要放入该包的类文件开头声明包,形式如下:

package 包名;

不同程序文件内的类也可以同属于一个包,只要在这些程序文件前都加上同一个包的说明即可。

2. 包的使用

在 Java 中,为了装载使用已经编译好的包,通常可以使用以下三种方法。

  1. 一是在要引用的类名前带上包名作为修饰符。代码如下:
bookexample.Test test = new bookexampie.Test();

其中,bookexample 是包名,Test 是包中的类名,test 是类的对象。

  1. 二是在文件开头使用 import 引用包中的类。代码如下:
import bookexample.Test;
  1. 三是在文件前使用 import 引用整个包。如下代码将 bookexample 整个包引入:
import bookexample.*;

在使用包时,可以用点(.)表示包所在的层次结构,用“.*”表示该目录下的所有内容。

3) 访问权限

1.私有成员和私有方法

private

只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。

2.公有变量和公有方法

public

3.友好变量和友好方法

不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法

4) 内部类

在一个类中声明的另一个类

内部类与外嵌类的重要关系:

  • 内部类的外嵌类成员变量仍然有效,内部类的方法也可以调用
  • 在内部类的类体中不可以声明类变量和类方法,在外嵌类的类体中可以用内嵌类声明对象作为外嵌类的成员
  • 内部类仅供外嵌类使用,其他类不可以用某个类的内部类声明对象

语法特点:

  • 不允许有static描述
  • 写在public类中

只是想让一个类中有某个属性,可以使用内部类实现

A a = new A;
Innere b = a.new Inner;

class Inner {
    
}
void test(){
    Inner in = this.new Inner;
}

5) 匿名类

没有名字的内部类

一次性的,绝大多数情况可以被成员内部类代替

特征:

  • 前面会有new
  • 后面跟着抽象类,接口名
  • 一般作为方法的实参(AWT的事件监听)
1.和类有关的匿名类

我们没有显式的声明一个类的子类,而又想用子类创建一个对象,可以直接使用一个类的子类的类体创建一个子类对象,匿名类就是一个子类由于无名可用所以不能能用匿名类声明对象,但是可以直接用匿名类创建一个对象

new AbstractPole() {
    //匿名类的类体
}
  • 匿名类的类体中不可以声明static成员变量和static方法
  • 使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类
2.和接口有关的匿名类

Java允许直接用接口名和一个类体创建一个匿名对象

假设有一个接口A

new A(){
    //实现接口匿名类的类体
}	
  • 必须重写接口中的所有方法

6)异常类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值