Java提升学习(六):Object类,泛类
一、Obejct类
java.lang.Object
类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,终找的父类就是Object
。
Object的方法有以下几种:
拿toString();
方法举例:
父类
public class Factory/*extends Object*/ {
private String a;
public Factory(String x){
this.a = x;
}
public String toString() {
return this.a;
}
}
子类:
public class great {
public static void main(String[] args){//这是一个主方法
Factory factory = new Factory("haha");
System.out.print(factory.toString());
}
}
//-----------输出---------
haha
还有一个Objects
,它提供了一些方法来操作对象,它由一些静态的实用方法组成。
二、泛类
一般地,在数据类型未知的情况下,会使用泛类,来进行预支。
- 泛类的定义:
父类
public class Factory<E>/*extends Object*/ {
private E e;
public void setE(E e){
this.e = e;
}
public E getE() {
return this.e;
}
}
子类
public class great {
public static void main(String[] args){//这是一个主方法
Factory<String> a = new Factory();//在此处传入需要的数据类型
a.setE("sabi");
String b = a.getE();
System.out.println(b);
}
}
E相当于需要传入的数据类型,e是数据。
- 含有泛类型的方法:
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
示例
public class Factory<E>/*extends Object*/ {
private E e;
public void setE(E e){
this.e = e;
}
public E getE() {
return this.e;
}
public static <M> M way(M m) {
return m;
}
}
public class great {
public static void main(String[] args){//这是一个主方法
Factory<String> a = new Factory<String>();
a.setE("sabi");
String b = a.getE();
System.out.println(b);
System.out.println(a.way("hahaha"));
System.out.println(a.way(66.66));
}
}
//---输出---
sabi
hahaha
66.66
示例中定义的泛类方法的返回值也是泛类,比较活泛。
- 含有泛类的接口
修饰符 interface接口名<代表泛型的变量> { }
示例
public interface MyGenericInterface<E>{
public abstract void add(E e);
public abstract E getE();
}
public class MyImp1 implements MyGenericInterface<String> {
@Override
public void add(String e) {
//方法体
}
@Override
public String getE() {
return null;
}
}
- 泛类通配符
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>
表示。但是一旦使用泛型的通配 符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
public static void main(String[] args) {
Collection<Intger> list1 = new ArrayList<Integer>();
getElement(list1);
Collection<String> list2 = new ArrayList<String>();
getElement(list2);
}
public static void getElement(Collection<?> coll){