继承

继承的基本概念:继承就是扩展已有的功能,在继承中有父类和子类,父类有时候又称为超类 ,子类又称为派生类。


1子类不能多重继承:一个子类只能继承一个父类,一个孩子只能有一个亲爸。

2子类可以多层继承:一个子类能继承一个父类,父类还能继承别的类。一个孩子有了一个爸爸,但爸爸还有爸爸。

3在继承中子类不能访问父类的私有操作,而只能访问父类的公共操作。对于私有的操作,不能直接访问,但是可以通过别的方式来访问。

子类的实例化过程。


总是先执行父类中的构造方法,然后才调用子类自己的构造方法,为什么会这样?

  构造方法的主要目的:为类中的属性提供初始化。

在实例化子类对象的时候,肯定要先实例化父类中的内容,为父类初始化。

方法的覆写:

class A{
public void fun(){

}
} ;
class B extends A{
public void fun(){//方法的复写

}
} ;

子类中定义和父类中相同的方法,称为方法的覆写。需要注意访问权限的问题。

class A{
public void fun(){
System.out.println("A类中定义的方法") ;
}
} ;
class B extends A{
public void fun(){//方法的复写
System.out.println("B类中定义的方法") ;
}
} ;
public class OverrideDemo01{
public static void main(String args[]){
B b = new B() ;
b.fun() ;
}
}

执行结果是“B类中定义的方法”,所以调用的是B类中的fun()方法。也就是调用的是子类中的方法。

思考:

如果父类中使用了private权限,而子类中使用了default权限,那么这样的操作叫覆写吗?

在调用之前,一定要掌握一个原则,只要是使用子类时候对象,调用的方法也被子类覆写过的话,则调用的永远是覆写过的操作。

class A{
private void fun(){
System.out.println("A类中定义的方法") ;
}
public void print(){
this.fun() ;
}
} ;
class B extends A{
void fun(){//方法的复写
System.out.println("B类中定义的方法") ;
}
} ;
public class OverrideDemo03{
public static void main(String args[]){
B b = new B() ;
b.print() ;
}
}

执行结果,:“A类中的方法”

记住:远不是覆写,而是重新定义。



如果想调用父类中被子类覆盖过的方法,只能通过"super.方法()"的方式来调用。

class  A{
public  void fun(){
System.out.println("A类中定义的方法") ;
}
} ;
class B extends A{
public void fun(){//次方法实际上属于新建的一个方法。
super.fun() ;//调用父类中的fun方法
System.out.println("B类中定义的方法") ;
}
} ;
public class OverrideDemo04{
public static void main(String args[]){
B b = new B() ;
b.fun() ;
}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值