java学习笔记2

来源:互联网 发布:豫广网络 编辑:程序博客网 时间:2024/05/21 18:36

(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) );       } }

 

 

原创粉丝点击