2021-05-10

继承概述
通过扩展一个类来建立另外一个类的过程,叫做继承
inheritance
通俗地说,所谓继承,就是让类与类之间产生父子关系。
被继承的类叫做 父类 (基类、超类) 继承的类叫做 子类 (派生类)
格式( extends
子类继承父类之后有什么效果?
子类拥有了父类的 非私有 成员(成员变量、成员方法)
继承的使用场景
子类通过继承,拥有了父类的非私有成员,这是开发中常见的做法,
那么,继承还有哪些使用场景呢?
向上抽取:
多个类中存在相同的属性和行为时,可以将这些内容提取出来放到一个新类中,让这些类和新类产生父
子关系,实现代码复用。
向下扩展:
当需要扩展已有的类的功能时,可以通过继承已有的类,在子类中添加新功能或重新实现已有功能,对
父类(已有的类)没有影响
继承的传递性
package com.bigdata.demo3;
public class A extends B {
String a;
}

 

package com.bigdata.demo3;
public class B extends C {
String b; }
package com.bigdata.demo3;
public class C {
String c;
}

 

package com.bigdata.demo3;
public class Test {
public static void main(String[] args) {
// C c = new C();
// String c1 = c.c;
// B b = new B();
// String b1 = b.b;
// String c = b.c;
A a = new A();
String a1 = a.a;
}
}

 

继承关系中子父类成员变量的使用
需求:子父类中定义了同名的成员变量,如何使用?
分析:
A :子类中定义成员变量 int price ,默认值为 10
B :父类中定义成员变量 int price ,默认值为 20
C :子类成员方法中定义局部变量 int price ,值为 5
D :在子类成员方法中分别输出三个 price 的值
结论
1 查找变量的原则: 就近原则
2 查找变量的顺序: 局部变量 , 成员变量 , 父类
3 访问父类变量的方式: super. 父类变量名 ;
4 super : 当前对象父类的引用(父类内存空间的标识)
5 对象初始化顺序: 先初始化父类内容,再初始化子类内容
 
package com.bigdata.demo2;
public class Parent {
double price = 30;
}

 

package com.bigdata.demo2;
public class Children extends Parent {
double price = 20;
public void test(double price) {
System.out.println(price); // 10.0
// this: 不看局部变量, 从本类中找成员, 如果找不到, 到父类里面去找
System.out.println(this.price); // 20.0
// super: 从父类开始找
System.out.println(super.price);
}
}

package com.bigdata.demo2;
public class Test {
public static void main(String[] args) {
Children children = new Children();
// System.out.println("children.price = " + children.price);
children.test(10);
}
}
继承关系中子父类成员方法的使用
需求:子父类中定义了同名的成员方法,如何使用?
结论
1 查找方法的原则: 就近原则
2 查找方法的顺序: 本类 , 父类
3 访问父类方法的方式: super. 父类方法名 ();
4 定义重名方法的前提: 父类功不能完全满足现实需求,扩展父类
功能 父类功能已过时,重新实现父类功能
继承关系中子父类构造方法的使用
需求:创建对象时,构造方法是如何被调用的?
继承关系中子父类构造方法的使用
需求:继承关系中 , 创建对象时,构造方法的调用顺序 ?
需求:父类不存在默认无参构造方法怎么办?
子类创建对象时,必须先初始化该对象的父类内容,若父类中不存在默认无参构造,须手动调用父类其 它构造。
方法重写( Override
定义:
子类中出现和父类方法定义相同的方法的现象
解释:
方法重写也叫方法的复写、覆盖 方法名、参数列表、返回值类型都相同
注意事项:
1 父类私有方法无法重写
2 子类方法访问权限不能小于父类方法
3 子类不能比父类方法抛出更大的异常(了解)
使用场景:
扩展父类功能 父类功能过时,重新实现父类功能
Java 中的访问权限修饰符
方法重写和方法重载的区别
 
Java 中继承的特点
单继承
Java 只支持类的单继承
私有成员不能继承
只能继承父类的非私有成员(成员变量、成员方法)
构造方法不能继承
构造方法用于初始化本类对象。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值