Java 25天基础-DAY 07-面向对象-继承子父类中变量的特点-函数的另一个特性重写(覆盖)-阿里云开发者社区

开发者社区> it民工007> 正文

Java 25天基础-DAY 07-面向对象-继承子父类中变量的特点-函数的另一个特性重写(覆盖)

简介: Java 25天基础-DAY 07-面向对象-继承子父类中变量的特点-函数的另一个特性重写(覆盖)
+关注继续查看

继承:
1、提高了代码的复用性
2、让类与类之间产生了关系,有了这个关系,才有了多态的特性。

注意:
千万不要为了获取其他类的功能,简化代码而继承。
必须是类与类之间有所属关系才可以继承,所属关系is a(谁是谁的一种);

java语言中,Java只支持单继承,不支持多继承。
因为多继承容易带来安全隐患:当多个父类中定义了相同的功能,当功能内容不同时,子类对象不确定要运行那一个。
但是Java保留了这种机制,并用另一种体现形式来完成表示,“多实现”

Java支持的多层继承:
也就是一个继承体系

如何使用一个继承体系中的功能呢?
想要使用体系,先查阅体系中父类的描述。因为父类中定义的是该体系中的共性功能。
通过了解共性功能就可以知道该体系的基本功能。
那么这个体系基本就能使用了。
那么在具体调用时要创建最子类的对象,为什么呢?因为有可能父类有可能不能创建对象。
或者创建子类对象可以使用更多的功能,包括基本的也包括特有的。

简单一句话,查阅父类功能,创建子类对象功能。

聚集关系(谁里面有谁):has a

聚合:球员和球队的关系,球员是球队的一员。

组合:手是人身体的一部分。关系比聚合的紧密程度更进。
clipboard

例1:简单继承关系
clipboard

例2:父类对象的引用,super关键字。
clipboard

变量的引用:
this代表的是本类的对象的引用;
super代表的是父类对象的引用;
如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this;子类要访问父类中的同名变量时,用super。super和this的使用几乎一致。

例:在zi对象建立时,会先初始化fu的对象。
clipboard

例2:当子类中没有对象时,会继承父类中的对象。
clipboard

函数的另一个特性:重写(覆盖)
当子类出现和父类一模一样的函数时,
当子类对象调用该函数,会运行子类函数的内容。
如同父类的函数被覆盖一样。

当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽然具备该功能,但是该功能内容却和
父类不一致,这时没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写新
功能。
1、子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖。
2、静态只能覆盖静态。

例1:保留父类的功能,并重写功能内容。
clipboard

函数重载:只看同名函数的参数列表。
函数重写:子父类方法要一模一样。

例2:覆盖的应用给Tel类增加System.out.println("pic")功能,而不修改Tel类。
class Tel
{

void show()
{
    System.out.println("number");
}

void showname()
{
    System.out.println("name");
}

}
class NewTel extends Tel
{

void show()
{
    //System.out.println("number");可以使用super.show();
    super.show();
    System.out.println("pic");
}

}
class jicheng
{

public static void main(String[] args) 
{
    NewTel dis = new NewTel();
    dis.show();
    dis.showname();
}

}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python编程语言学习:利用locals函数判断某个变量参数之前是否已经被定义/存在/出现
Python编程语言学习:利用locals函数判断某个变量参数之前是否已经被定义/存在/出现
15 0
Java基础-23总结多线程,线程实现Runnable接口,线程名字获取和设置,线程控制,线程安全,同步线程
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:多线程(理解) (1)多线程:一个应用程序有多条执行路径 进程:正
2757 0
用xcode和excel整理类的成员函数和成员变量
这个是以前情况才实用: 1. 没有debug symbol的类 2. 类被很多宏隔开了,都说不清楚那些宏的启用的 3. Category和Extension隔开了 整理函数: 1. 把程序运行起来,点击调试工具的暂停。
650 0
Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
1:成员变量和局部变量的区别(理解)(1)在类中的位置不同成员变量:类中方法外局部变量:方法定义中或者方法声明上(2)在内存中的位置不同 成员变量:在堆中局部变量:在栈中(3)生命周期不同(成员的创建与销毁时间)成员变量:随着对象的创建而存在,随着对象的消失而消失局部变量:随着方法的调用而存在,随着方法的调用完毕而消失(4)初始化值不同成员变量:有默认值局部变量:没有默认值,必须定义,赋值
1358 0
java中关于继承的问题
先来看一道面试题: java中关于继承的描述正确的是() A、一个子类只能继承一个父类 B、子类可以继承父类的构造方法 C、继承具有传递性 D、父类一般具有通用性,子类更具体 正确答案: A C D 子类不可以继承父类的构造方法,只可以调用父类的构造方法。
507 0
Java基础-06.总结二维数组,面向对象
1:二维数组(理解) (1)元素是一维数组的数组。(2)格式:A:数据类型[][] 数组名 = new 数据类型[m][n];B:数据类型[][] 数组名 = new 数据类型[m][];C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};D:数据类型[][] 数组名 = {{...},{...},{...}}; /*二维数组:就是元素
1384 0
HyperLedger Fabric 1.2 基础环境搭建(7)
学习了前面几章理论知识后,本章开始介绍实践操作,先介绍Fabric基础环境搭建,采用的操作系统为Centos 7 64位,依次介绍Docker安装、Docker-Compose安装、GO语言环境安装、Git安装和Fabric安装,最终完成可使用的Fabric环境。
2291 0
JavaScript创建对象(二)——构造函数模式
在JavaScript创建对象(一)—— 工厂模式中留下了一个问题,就是创建一个对象怎么判断一个对象的类型。换句话说使用下面这种方式: function createPerson(name, age, job){ var o = new Object(); o.
808 0
+关注
21
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载