iGEM赛前准备06——JAVA浅尝

面向对象语言的三大特性:封装、继承、多态

确切地说,那些没有声明成static的部分,才是对象的原型。
(static的被称为类变量和类方法,由属于该类的所有对象共享)

对象中的变量,称为“属性”或"实例变量"。
实现各种行为的过程和函数,称为"方法"。

创建对象实例
如果不使用new的话,只有对象的引用(也就是指针)而没有分配内存空间。

Student jolin = new Student();
Student jolin = new Student("Jolin","female",160,21);//构造函数

类的继承

class 子类名称 extends 父类名称

Java子类不能继承父类的构造函数。

重写(或覆盖):即子类中的同名函数会取代父类的实例方法。
不过,对于父类中的类方法,子类想要覆盖它必须也将该同名函数定义为类方法来取代它,称为“隐藏”。

隐藏父类的成员变量
只要变量名称相同,就算数据类型不同,也一样可以隐藏父类的成员变量。

如何在子类中,使用父类的构造函数、被重写的方法、被隐藏的成员变量?

super.xxx(父类中的函数名)

接口

只有常量和抽象方法(只有声明,没有实现)。

写法:
IArea是一个接口,类使用implements实现接口。
接口也可以不止一个,用逗号分隔。

常量类型: final

interface IArea{
	final double PI = 301415926;
	void area();
}

class Circle implements IArea{
	public void area(){
		//计算圆面积
	}
}

接口也可以继承。
在Java中,类不允许多重继承(表示父类不止一个),但却允许接口的多重继承。
接口一定是抽象类。

抽象类

除了有抽象方法,也可以有属性(变量)和操作。
写法:

abstract class Account{
	private string id;
	private double amount;
	public abstract void calInterest();//抽象方法
	double getBalance(){...};//抽象类中也可以有操作
}

抽象类可以用来作为数据类型,声明引用子类的对象变量。
因为父类的对象变量可以引用子类的对象。(也就是父类的指针可以指向子类吧。)
比如:

Account s2 = new SavingAccount("002-10-333-12",0.02);

Java可以同时继承抽象类且实现接口

class A extends B implements C

常量类
避免继承,防止子类访问和重写

final class

嵌套类

嵌套类的特点

  • 成品和零件的关系
  • 嵌套类也是外层类的成员
  • 拥有相同的访问权限
    在Java程序文件中只允许有一个public的类,而且程序文件名需与此类名相同。

匿名嵌套类,通常用于Java的Swing开发和Android接口组件的事件处理。

使用类继承来实现多态

动态绑定
多个子类实现同一抽象方法,在调用时根据对象的类型决定实际调用的方法。

即namespace,在Java中称作packages。
packages是一组相关类和接口的集合,简单来说,包是面向对象程序设计的零件库,程序开发者可以直接选用包中现成的各种类零件,组合零件来建立对象集合,完成Java应用程序的开发。

创建包

package xxx.myShape

导入包和类

import xxx.myShape.Circle;//导入Circle类
import xxx.myShape.* //导入整个包(含包中的所有类)

异常处理

在Java程序执行时产生的异常是一个对象,属于Thorwable类或其子类的实例对象。两种子类如下:

  • Error类:严重错误,会导致程序终止运行,无法使用异常处理
  • Exception类:可以进行补救
try{
	//检查是否产生异常对象,抛出
	...
}
catch(ExceptionType e){
	//(抛出异常后才执行的)异常处理
	...
}
finally{
	//可有可无,主要是进行程序善后
	//不论异常是否产生都会执行
	...
}

可以用多个catch同时处理多种类型的异常。

集合对象

旧版Java中主要指 Vector和Hashtable对象。
JDK 1.2后的版本提供Java Collections Framework(集合框架),这是保存和处理集合对象的统一软件框架。

泛型

类似C++的templates
提供编译阶段的集合对象类型检查功能,可以减少程序代码中取出集合对象所需的大量类型转换。

写法

使用泛型

HashSet<Byte> hset0 = new HashSet<Byte>();
HashSet<Float> hset0 = new HashSet<Float>();
HashSet<String> hset0 = new HashSet<String>();

Java SE7 支持下,可以简写为

HashSet<Byte> hset0 = new HashSet<>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值