您的位置:首页 > 编程语言 > Java开发

JAVA学习笔记之三

2013-12-12 21:53 78 查看
前几日忙于面试题,重新回归JAVA

今天聊聊JAVA继承和多态,依旧是C++和JAVA 对比学习

一、JAVA方法的继承

        这里假设的方法都是publc ,没有权限的问题。如果要考虑权限,还涉及到一个包的概念,下节再加以赘述。

        首先在JAVA中只支持单继承,这一点和C++不一样。

        此外C++默认的子类继承父类的成员函数和成员变量之后,若是子类有和其同名的成员变量和成员函数,他的机制是静态引用。(也就是在编译其间确定,根据引用类型决定)

        JAVA有一点不同,它的子类是覆盖(override)父类的函数。所以他的方法引用是使用动态引用。(根据绑定的对象决定。)

        贴code

       

class Fu
{
int x = 8;
Fu()
{
//	super();
test();
return;
}
void test()
{
System.out.println("fu test"+x);
}

}

class Zi extends Fu
{
int x = 9;
Zi()
{
super();
test();
return;
}
void test()
{
System.out.println("zi tett"+x);
}
}
class Test
{
public static void main(String[] args)
{

Fu myfu = new Zi();
//	 System.out.println("t get the"+myfu.x);
}
}

         output::zi test 0;  zi test 9;

         很明显,父类中调用的show()  方法是动态绑定了子类。

         事实上, JAVA继承中函数的继承很类似于C++中虚函数的实现。

二、final 关键字

       final 可以修饰类 方法 变量

 

       final 修饰的类不可以被继承

       final 修饰的方法不可以被覆盖

       final 修饰的变量是一个常量,只能被赋值一次

      短短的三句话概括了final的精髓。

       和C++比较相似的是,JAVA修饰变量很类似于const

三、抽象类和抽象方法

       c++  里面有纯虚函数 java里面也有相关的机制,用abstarct 关键字实现

       同样的类似于C++里面的多继承,JAVA是通过多接口的机制增加了一种保障。

       还是贴Code

abstract class  Person
{
abstract void show();
}

interface  Walk
{
public abstract void walk();
}
interface Hello
{
public abstract void hello();
}

class ZhangLu extends Person implements Walk,Hello
{
public void show()
{
System.out.println("i can show");
}
public void walk()
{
System.out.println("i can  walk");
}
public void hello()
{
System.out.println("i can hello ");
}
}

class Test2
{
public static void main(String[] args)
{
System.out.println("Hello World!");
ZhangLu zhang1 = new ZhangLu();
zhang1.show();
zhang1.walk();
zhang1.hello();
}
}


     很明显地指出了JAVA中的多接口继承。

   一些总结:

  1、方法只有声明,没有实现时 该方法就是抽象方法,需要被abstract修饰

         抽象方法必须定义在抽象类中,该类必须也被abstract修饰

  2、抽象类必须由其子类覆盖了其***所有的抽象方法之后,否则该子类还是抽象类

  3、抽象类可以不定义抽象方法,但是很少见,目的就是不让该类创建对象——AWT的适配器对象就是该类

  4、抽象类可定义抽象方法,也可以定义非抽象方法

  5、abstract 不能喝final private static 共存

  6、接口(interface) 可以实现多继承。

  所以说C++ 的多继承在JAVA处被变为了多接口的实现。

  

  

    

       

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java