java基础(十九)继承

 【继承的好处】
  1.提高了代码的复用性
  2.让类与类之间产生了 关系,给第三个特征多态提供了前提
  java中支持单继承。不支持多继承,但对c++中的多继承机制进行改良。
  不支持多继承,是因为多个父类中有相同成员,会产生调用不确定性
【成员变量】
子类可以直接使用父类的变量
当本类成员和局部变量同名用this区分
当子类中的成员变量同名 用super:代表父类
class Fu{
   int num=5;
}
class Zi extends Fu{
int num;
System.out.println(this.num+"..."+super.num);
}

super不代表父类,代表一个父类的空间
【什么时候写继承】
继承应该是当类与类之间存在着共同点时,把相同的抽取出来形成继承关系
,而不是为了拿别人的东西而继承。
如:
 class test1{
void show1();
void show2();
}
 class test2{
void show1();
void show3();
}
不能因为test2与test1有相同的show1();而从test2继承test1,把show1();抽取出来。
class fu{
void show1();
}
class test1 extends fu{
    void show2();
}
class test2 extends fu{
void show3();
}
【继承关系内存】
内存中会先加载父类的构造函数
子类中不能直接访问父类中的私有内容
private Fu{
private int num=4
}
【成员函数】
当子父类中出现成员函数一模一样的情况,会运行子类的函数。
这种现象,成为覆盖操作。这是函数在子类中的特性。
函数两个特性:
   1.重载。同一个类中。overload
   2.覆盖。子类中。覆盖也称为重写,复写。override
class Fu{
     void show(){
     System.out.println("fu show run");
}
class zi extends Fu{
void show(){
System.out.println("zi show run");
}
}
}
Zi zi=new Zi();
zi.show();
打印的是 zi show run

覆盖注意事项:
1.子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限。
如:
例子1:
父类中:public void show();
子类中:void  show();这是不行的
例子2:
父类中:private void show();
子类中:public void show();
这种情况就不是覆盖
2.静态只能覆盖静态,或被静态覆盖
如:
 父类中:
  public static void show(){}
 子类中也必须
  public static void show(){}
才能覆盖
【什么时候使用覆盖操作】
当一个类进行子类的扩展时,子类需要保留父类的功能声明,
但是要定义子类中该功能的特有内容时,就使用覆盖操作完成
class honeP{
void call(){}
void show(){}
}
class NewPhone extends Phone{
void show(){
System.out.println("name");
super.show();
}
}













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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值