JAVA学习笔记之三


前几日忙于面试题,重新回归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处被变为了多接口的实现。

  

  

    


       

       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值