类的高级特征

来源:互联网 发布:ios网络电视 编辑:程序博客网 时间:2024/06/09 12:53
一 类和包
为了避免类名的冲突,我们引入了包的概念。
下面是是使用两个不同的类,但是具有相同的名字的方法:
java.util.Date date=new java.util.Date();
java.sql.Date  date2=new java.sql.Date(233);
我们可以通过以下方式创建一个包
黑马程序员----类的高级特征 - 君山 - 鲍凯歌
包的命名是必须全部要用小写字母开头。有的时候为了保证不重复,使用作者Internet域名的反序命名。
使用import关键字导入包。
 二 Object类
之前讲过Object类,这里讲一下重写equals方法。
equals具体的特征:自反性,传递性,一致性,对称性。

String s1="呵呵";
String s2="呵呵";
String s3=new String("呵呵");
System.out.println(s1==s2); //true
System.out.println(s1==s3); //false
System.out.println(s1.equals(s3)); //true

试比较以上代码的结果,我们可以看到==比较的是内存地址,而equals比较的是内容。下面是重写equals方法。

public class Student implements Comparable<Object>{
private String name;
private int age;
private int score;

public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (this.age != other.age)
return false;
else if(this.score!=other.score){
return false;
}
else if (!this.name.equals(other.name))
return false;
return true;
}

三 内部类
黑马程序员----类的高级特征 - 君山 - 鲍凯歌
① 成员内部类
 最基本的内部类,可以访问外部类的方法和变量,就算是被私有化。内部类的实例化一定要绑定在外部类的实例化上,如果从外部初始化一个内部类对象,那么内部类对象就会绑定在外部类的对象上。

public class W1 {

public static void main(String[] args) {
dog d=new dog("小花");
dog.childdog cd=null;
cd=d.new childdog();//创建内部类的实例
d.say();
cd.say();
}
}
class dog{
private String name;
public dog(String name){
this.name=name;
}
public void say(){
System.out.println(name+"外部类的方法");
}
class childdog{
public void say(){
System.out.println("内部类的方法");
}
}
}

输出结果:小花外部类的方法
                   内部类的方法
② 局部内部类
在类的局部定义的内部类就是局部内部类。代码示例:

interface Out{
}
class A2 {
public Out doit( final String x){
class Inner implements Out{
Inner(String s){
s=x;
System.out.println(s);
}
}
return new Inner("doit");
}
}

③ 匿名内部类
这种内没有名称,有的时候看不出来

public class D1 {
public Out doit(){
return new Out(){
private int i=0;
public int getValue(){
return i;
}
};
}
}

这种内部类的作用就是创建一个实现Out接口的匿名类的对象。匿名内结束的时候需要加;号结束
匿名内部类可以分为三种形式:
继承式匿名内部类
接口式匿名内部类
参数式匿名内部类
④ 静态内部类
在内部类前面加上static这就成了静态内部类。静态内部类的一个最大的特点就是,不可以使用外部类的非静态成员。创建为内部类就不需要外部类的对象,但是不能从静态内部类的对象中访问非静态外部类的对象。相当于一个外部类。
0 0
原创粉丝点击