类与对象

封装:是一种信息隐藏技术

利用抽象数据类型将数据和基于数据的操作封装在一起;
用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的;
封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节。

继承:基于已有的类产生新类的机制

是指新的类可以获得已有类(称超类或父类)的属性和行为,称新类为已有类的子类(也称为派生类)
在继承过程中子类继承了超类的特性,包括方法和实例变量;

  • 单继承:一个子类只有单一的直接超类。
  • 多继承:一个子类可以有一个以上的直接超类。

数据成员声明

  • public、protected、private为访问控制符。
  • static指明这是一个静态成员变量(类变量)。
  • fianl指明变量的值不能被修改。
  • transient指明变量是不需要序列化的。
  • volatile指明变量是一个共享变量。

实例变量

  • 没有static修饰的变量(数据成员)成为实例变量
  • 存储所有实例都需要的属性,不同的实例的属性值可能不相同

类变量(静态变量)

  • 用static修饰
  • 在整个类中只有一个值
  • 类初始化的同时被赋值
  • 适用的情况
    • 类中所有对象都相同的属性。
    • 经常需要共享的数据
    • 系统中用到的一些常量值

方法声明

  • public、protected、private控制访问权限。
  • static 指明这是一个类方法(静态方法)
  • final指明这是一个终结方法
  • abstract指明这是一个抽象方法
  • native用来集成java代码和其它语言的代码
  • syschronized用来控制多个并发线程对共享数据的访问

实例方法

  • 表示特定对象的行为
  • 声明时前面不加static修饰符
  • 参数传递:
    • 值传递:参数类型为基本数据类型时
    • 引用传递:参数类型为对象类型或者数组时

类方法:

  • 也称为静态方法,声明时前面需要加static修饰。
  • 不能被声明为抽象的
  • 可以类名直接调用,也可以类名实例调用。

可变长参数

  • 可变成参数使用省略号表示,其实质是数组。
    例如,“String …s” 表示“String[]s”

  • 对于具有可变长参数的方法,传递可变参数的实际参数可以是以0个到多个对象

    可变参数的实际上是利用数组实现的,具体可以参考下边的例子

public class Varargs {
	public void varagsMethod(List<String>... values) {
		Object[] array = values;
		List<Integer> list = (List<Integer>) array[0];
		list.add(1);
	}

	public void useVaragsMethod() {
		List<String> list = new ArrayList<String>();
		list.add("Hello");
		// Type safety: A generic array of List<String> is created for a varargs
		// parameter
		varagsMethod(list);
		String str = list.get(1);
	}

	public static void main(String[] args) {
		System.out.println("Varargs");
	}
}

反编译之后

public class Varargs
{

    public Varargs()
    {
    }

    public transient void varagsMethod(List values[])
    {
        Object array[] = values;
        List list = (List)array[0];
        list.add(Integer.valueOf(1));
    }

    public void useVaragsMethod()
    {
        List list = new ArrayList();
        list.add("Hello");
        varagsMethod(new List[] {
            list
        });
        String str = (String)list.get(1);
    }

    public static void main(String args[])
    {
        System.out.println("Varargs");
    }
}

包与目录

  • 包名就是文件夹名,即目录名;
  • 目录名并不一定是包名。
  • Java自动引入Java.lang包

类成员的访问权限

  • public公有:可以被其它任何方法访问,前提是对类成员所属的类有访问权限。
  • protected 只能被同一类及其子类的方法访问
  • private 只可被同一类的方法访问
  • default 默认 仅允许同一个包内的访问,又被称为包访问权限

this 关键字

  • 如果方法内的局部变量(包括形参)名与实例变量名相同,则方法体内部访问实
    例变量时需要this关键字

对象的自动回收

  • 无用对象
  • 离开iale作用域的对象
  • 无引用指向对象
  • Java运行时系统通过垃圾收集器周期性的释放无用对象所使用的内存
  • Java运行时系统会在对象进行自动垃圾回收前,自动调用对象的finalize()方法
    垃圾回收器
  • 自动扫描对象的动态内存区,对不再使用的对象做上标记以进行垃圾回收
    作为一个后台线程运行,通常在系统空闲时异步地执行

finalize()方法

  • 在类java.lang.Object中声明,因此Java中的每一个类都有该方法:
    protectetd voud finalize() throw throwable
    用于释放资源

  • 类可以覆盖(重写)finalize()方法。
    finalize()方法有可能在任何时候以任何次序执行

覆盖toSting()方法

  • toString()方法 将对象内容转化为字符串对象
    下面的两行代码等价
System.out.prientln(anAccount);
System.out.println(anAccount.toString());

如果需要特殊的转化功能,则需要自己覆盖toString()方法:

  • 必须被声明为public;
  • 返回类型为String;
  • 方法的名称必须为toString,且没有参数
  • 在方法体中不要使用输出方法System.out.prientln();

DecimalFormat类

DecimalFormat类在Java.text包中。
在toString()方法中使用DecimalFormat类的实例方法format对数据进行格式化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值