集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都java开发:JAVA-类继承、覆写、final关键字

发布者: 成都达内     浏览次数:     发布时间:2019-05-05 11:14:07

1.JAVA继承-extends:在java中,要想实现继承则使用extends关键字.一般子类被称为派生类,父类称为基类(super)...

  成都java开发:JAVA-类继承、覆写、final关键字

  1.JAVA继承-extends

  在java中,要想实现继承则使用extends关键字.

  一般子类被称为派生类,父类称为基类(super)

  extends需要注意的地方:

  java不允许多重继承(一个类只能继承一个父类,不能继承多个父类)、

  派生类会继承基类所有属性和方法,但不能直接访问基类的private私有属性

  实例化派生类时,会先去调用父类的构造方法构造基类,再实例化自身的属性类对象,最后才是调用自身类构造方法.

  在派生类中,有个隐藏的super,表示为基类,所以我们可以通过它指定如何构造基类

  1.1 示例1-super使用

  注意:super必须放在构造方法首行使用,如果用户不使用super,则编译器默认调用super()来初始化父类

  代码如下:

  class Parent

  {

  public Parent()

  {

  System.out.println("Parent()");

  }

  public Parent(String str)

  {

  System.out.println("Parent(String str):"+str);

  }

  }

  class Derived extends Parent

  {

  public Derived()

  {

  super("123"); //调用Parent(String str)初始化父类

  System.out.println("Derived()");

  }

  }

  public class Test{

  public static void main(String args[]){

  Derived d = new Derived();

  }

  }

  打印如下:

  成都java开发:JAVA-类继承、覆写、final关键字

  2.JAVA继承之方法覆写

  当派生类覆写基类的方法时候,要遵守方法的权限,返回值以及参数都一致.

  如果派生类覆写的基类方法是private的,则不能实现覆写功能,因为基类的private方法是不可见的(参考2.2示例)

  派生类覆写方法,一般用于基类的方法不满足当前派生类功能实现时,才会去覆写.

  2.1 示例1-覆写

  代码如下:

  class Parent

  {

  public void func(int i)

  {

  System.out.println("Parent::func()");

  }

  }

  class Derived extends Parent

  {

  public void func(int i) //覆写父类的func方法

  {

  System.out.println("Derived::func()");

  }

  }

  public class Test{

  public static void main(String args[]){

  Derived d = new Derived();

  d.func(1);

  }

  }

  2.2示例2-派生类private无法实现覆写

  先来个正常覆写的代码:

  class Parent

  {

  public void func()

  {

  System.out.println("Parent::func()");

  }

  public void print()

  {

  func();

  }

  }

  class Derived extends Parent

  {

  public void func() //覆写父类的func方法

  {

  System.out.println("Derived::func()");

  }

  }

  public class Test{

  public static void main(String args[]){

  Derived d = new Derived();

  d.print();

  }

  }

  如下图所示,打印派生类的func():

  成都java开发:JAVA-类继承、覆写、final关键字

  然后将Parent的func()改为private:

  private void func()

  {

  System.out.println("Parent::func()");

  }

  如下图所示,则打印基类的func():

  成都java开发:JAVA-类继承、覆写、final关键字

  2.3JAVA继承之如何通过派生类调用基类被覆盖的方法

  在上面第1节,我们讲过派生类中有个隐藏的super,表示为基类.所以当基类被覆写的方法时,我们可以通过super来调用基类的方法.

  示例-super调用基类方法

  class Parent

  {

  public void func()

  {

  System.out.println("Parent::func()");

  }

  }

  class Derived extends Parent

  {

  public void func() //覆写父类的func方法

  {

  super.func(); //调用父类的func,如果不加super,则会出现一直递归

  System.out.println("Derived::func()");

  }

  }

  public class Test{

  public static void main(String args[]){

  Derived d = new Derived();

  d.func();

  }

  }

  打印如下:

  成都java开发:JAVA-类继承、覆写、final关键字

  3.final关键字

  在java中,final被称为终结器, final可以修饰变量,方法和类.

  3.1 final修饰类

  当final修饰类时,则表示该类为最终的,也就是说该类不能再有子类了,示例如下:

  final class A { // 修饰该类不能有子类

  }

  class B extends A { // 错误的继承

  }

  3.2 final修饰方法

  当在某个类的方法前面定义final时,则表示该方法不允许在子类里进行方法覆写(可以实现方法重载)

  示例如下:

  class A {

  public final void fun() {} //此方法不允许子类覆写

  public void fun(int i) {} //可以实现方法重载

  }

  class B extends A {

  public void fun() {} // 错误:此处不允许覆写

  }

  3.3 final修饰变量

  当final修饰变量时,则表示该变量为常量(类似C++中const).示例如下:

  public static final String LICENSE = "GPL"; //修饰全局常量,定义常量时,名称需大写

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56