java学习笔记2

(1)final 关键字

在 Java 中声明类、属性和方法时,可使用关键字 final 来修饰。

1、 final 标记的类不能被继承。

2、 final 标记的方法不能被子类复写。

3、 final 标记的变量(成员变量或局部变量)即为常量,只能赋值一次

(2) 接口(interface)

接口(interface)是 Java 所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同:

1、接口里的数据成员必须初始化,且数据成员均为常量。

2、接口里的方法必须全部声明为 abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法” 。

interface 接口名称 // 定义抽象类

{

final 数据类型成员名称 = 常量 ; // 数据成员必须赋初值

abstract 返回值的数据类型方法名称(参数…) ;

// 抽象方法,注意在抽象方法里,没有定义方法主体。

}

接口是 java 实现多继承的一种机制,一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就明显无法实现,所以就出现了接口的概念。一个类只

可以继承一个父类,但却可以实现多个接口。接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要

下面是接口实现的一个实例,注意观察它和继承的不同

 

public interface A {
       inti = 10 ;
       publicabstract void sayi();
}
public interface E {
  intx = 40;
 public abstract  void SayE();
}
public interface j {
  intj = 40;
 public abstract  void Sayj();
}
public class C implements B {
       publicvoid sayi() {
              System.out.println("i="+ i);
       }
       publicvoid SayE() {
              System.out.println("x"+ x);
       }
       publicvoid sayj() {
              System.out.println("j="+j);
       }
}
public class Infaced {
       publicstatic void main(String[] args)
       {
        C c = new C();
        c.sayi();
        c.sayj();
        c.SayE();
       }
 
}


 

从此程序中可以发现与类的继承不同的是,一个接口可以同时继承多个接口,也就是同时继承了多个接口的抽象方法与常量。

(3)多态性

1  向上转型:

父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。

2  向下转型:

与向上转型对应的一个概念就是“向下转型” ,所谓向下转型,也就是说父类的对象可以转换为子类对象,但是需要注意的是,这时则必须要进行强制的类型转换。

注意:向上转型可以自动完成;向下转型必须进行强制类型转换

向下转型简单实例

 

public class person {
       publicvoid fun1()
         {
          System.out.println("1 personfun1");
         }
       publicvoid fun2()
         {
          System.out.println("2 personfun2");
         }
}
public class student extends person{
      
       publicvoid fun1()
         {
          System.out.println("3 studetnfun3");
         }
 
       publicvoid fun4()
         {
          System.out.println("4 personfun1");
         }
}
public class testdemo {
       publicstatic void main(String[] args) {
         person p = new student(); 
         student s = (student)p;
         s.fun1();
         s.fun2();
         s.fun4();
       }
}


 

(4)instanceof 关键字的使用

用 instanceof 判断一个类是否实现了某个接口,也可以用它来判断一个实

例对象是否属于一个类。

对象 instanceof 类(或接口)

它的返回值是布尔型的,或真(true)、或假(false)。

(5)复写 Object 类中的 equals 方法

Object 类中有一个 equals 方法,此方法用于比较对象是否相等,而且此方法必须被复写

首先要明确==equals的区别==比较的是2个对象的地址,而equals比较的是2个对象的内容
下面给出一个复写equals方法的例子

 

public class person1 {
       privateString  name;
       privateint age ;
       public  person1(String  name,int age)
       {
         this.name = name ;
         this.age = age;
       }
      
  public boolean equals(Object o)
    {
          boolean temp = true;
         
          person1 p1 =  this ;
          if(o instanceof person1 )
            {
                 person1 p2 = (person1)o;
                
                 if( !(p1.name.equals(p2.name) &&p1.age==(p2.age) ) )
                   {
                        temp = false;
                   }
            }
          else
                 temp =false;
         
           return temp;
    }
}
public class overequals {
       publicstatic void main(String[] args){
       person1p1 = new person1("张三", 10);
       person1p2 = new person1("张三",10);
         System.out.print(p1.equals(p2) );
       }
 
}


 

 

 

 

posted on 2013-09-26 23:20  you Richer  阅读(205)  评论(0编辑  收藏  举报