首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java入门(9.1)-- 继承

为了优化继承与多态,一些除了可继承外,还需要使用接口形式,Java可以同时实现多个接口,接口被用来建立之间关联标准。...在Java中使用extends关键字来标识两个继承关系: 语法:Child extends Parents 父(Computer.java): package core; public class...子类重写父方法还可以修改方法返回值类型(J2SE5.0以上支持),这种重写方式需要遵循一个原则,即重写返回值类型必须是父同一方法返回值类型子类。...在Java中一切都以对象形式进行处理,在继承机制中,创建一个子类对象,将包含一个父子对象,这个对象与父创建对象是一样。两者区别在于后者来自外部,而前者来自子类对象内部。...Java言中,一个只可以有一个父,可以使用多重继承: package core; public class Demo {//主方法 public static void main(String

33340
您找到你想要的搜索结果了吗?
是的
没有找到

Java 继承、多态与复用

继承   继承是所有OOP语言不可缺少部分,在java中,使用extends关键字来表示继承关系。当创建一个时,总是在继承,如果没有明确指出要继承,就总是隐式地 Object 进行继承。...对于父包访问权限成员变量,如果子类和父同一个包下,则子类能够继承,否则,子类不能够继承; 对于子类可以继承成员变量,如果在子类中出现了同名称成员变量,则会发生 隐藏 现象,即子类成员变量会屏蔽掉父同名成员变量...具体原则如下: 子类能够继承 public和protected成员方法 ,不能够继承 private成员方法; 对于父包访问权限成员方法,如果子类和父同一个包下,则子类能够继承...---- 2、final参数 final参数 主要应用于局部内部类和匿名内部类中,更多详细介绍请移步我另一篇文章:Java 内部类综述。...所以,多态作用主要体现在两个方面: 多态通过分离做什么和怎么做,另一个角度将接口和实现分离开来,从而实现将改变事物与未变事物分离开来; 消除类型之间耦合关系(类似的,在Java中,泛型也被用来消除或方法与所使用类型之间耦合关系

66420

Java复习3-继承

前言 本次学习面向对象设计另外一个基本概念:继承(inheritance)。这是Java程序设计中一项核心技术。另外,还要学习反射(reflection)概念。...Java不支持多继承,一个只能继承一个,而不是多个。要想要实现多个,可以使用接口。 所有的继承Object对象。...反射 反射库(reflection library)提供了一个非常丰富且精心设计工具集,以便编写能够动态操纵Java代码程序。 Class Class保存了Java对象归属信息。...所以,只有是这个Class对象,都是同一个。如何获得这个Class呢?...将公共操作和字段放在超 不要使用受保护字段,非必须要,不要使用protected,而推荐用private 使用继承实现is-a关系,不是这样关系不应该使用继承 除非所有继承方法都有意义,否则不要使用继承

60420

Java是如何默认继承Object

前言 学过Java的人都知道,Object是所有。但是你有没有这样疑问,我并没有写extends Object,它是怎么默认继承Object呢?...那么今天我们就来看看像Java这种依赖于虚拟机编程语言是怎样实现默认继承Object,以及Java编译器和JVM到底是如何做?...继承自Object验证 首先我们来验证一下Object是不是所有,随便新建一个Java,如下图: ?...因此,Object是超,是所有。 推测可能原因 要了解Java是如何默认继承Object原因其实并不需要知道JVM实现细节。只需了解一下对于这种虚拟机程序基本原理即可。...对于这种情况,编译后二进制角度来看,所有的都会有一个父(后面可以以此依据来验证)。

1.7K30

Java】抽象&继承综合案例

专栏介绍 【Java】 目前主要更新Java,一起学习一起进步。 本期介绍 本期主要介绍抽象&继承综合案例 文章目录 1....我们把没有方法主体方法称为 抽象方法 。 Java 语法规 定,包含抽象方法 就是 抽象 。 定义 抽象方法 : 没有方法体方法。...最终,必须 有子类实现该父 抽象方法,否则,最初到最终子类都不能创建对象,失去意义。...抽象中,不一定包含抽象方法,但是有抽象方法必定是抽象。 理解:未包含抽象方法抽象,目的就是不想让调用者创建该类对象,通常用于某些特殊结 构设 计。 4....请根据描述,完成案例中所有定义以及指定之间继承关系,并完成发红包操作。

42510

Java继承重名static函数浅谈解析调用与分派

,当我们用父实例引用(实际上该实例是一个子类)调用static函数时,调用是父static函数。...原因在于方法被加载顺序。 当一个方法被调用时,JVM首先检查其是不是方法。如果是,则直接调用该方法引用变量所属中找到该方法并执行,而不再确定它是否被重写(覆盖)。...动态分派是用于方法重写,比如我调用一个A方法f,如果该类有子类a,那么我以a来调用f时候,调用实际是a.f而非A.f。 看起来还真的像动态分派是不是?但是结果不符合啊!...这里原因在于,动态分派时,我们实际是在讨论Javainvokevirtual指令行为:这个指令首先会去寻找调用者运行时类型,然后在其方法表里面寻找匹配方法,如果找不到,再从其父里找。...这个过程就是Java中方法重写本质,也就是动态分派。 而static方法是通过invokestatic指令来调用

1.2K30

关于Java对象、、抽象、接口、继承之间联系

关于Java对象、、抽象、接口、继承之间联系: 导读: 寒假学习JavaSE基础,其中概念属实比较多,关联性也比较大,再次将相关知识点复习一些,并理顺其中关系。...关于接口简化:在定义接口时,对于全局常量和抽象方法可以省略static final与 abstract关键字; package Java入门到项目实战.抽象与接口; interface Imessage3...,可以使用static方法,隐藏接口调用细节 package Java入门到项目实战.抽象与接口; interface ImessageS{ public String message(...抽象特点: 含有抽象方法一定是抽象 抽象不一定还有抽象方法 抽象中既可以有抽象方法也可以有非抽象放方法 如果子类继承了抽象方法,要么重写抽象抽象方法,要么子类就声明为抽象...static 方法:该类方法不受到抽象实例化对象限制 package Java入门到项目实战.抽象与接口; abstract class message{ public abstract

87720

Java继承中static成员函数重写

java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常非static函数那样运行。...; //输出结果为 static in testClass1 16 tc2.SMothod(); //输出结果为 static in testClass2 17 } 18 } 结果中可以看到...,当我们用父实例引用(实际上该实例是一个子类)调用static函数时,调用是父static函数。...原因在于方法被加载顺序。 当一个方法被调用时,JVM首先检查其是不是方法。如果是,则直接调用该方法引用变量所属中找到该方法并执行,而不再确定它是否被重写(覆盖)。...如果不是,才会去进行其它操作(例如动态方法查询),具体请参考:方法加载

1.6K40

【说站】java线程池中继承探究

java线程池中继承探究 1、说明 Java线程池核心实现是ThreadPoolExecutor Executor:只提供执行任务接口,用户不必关注如何制作线程,如何制作线程,只需提供Runnable...ExecutorService:在执行任务基础上,追加了提交任务、线程池生命周期管理等接口。...AbstractExecutorService:抽象系列执行任务过程,保证下层实现只需关注执行任务方法即可。...2、实例 // ctl:高三位表示线程池运行状态,低29位表示线程池线程运行数量 // 一个变量存储两个值好处是不必费心思(比如加锁)去维护两个状态一致性 private final AtomicInteger...rs, int wc) { return rs | wc; } 以上就是java线程池中继承探究,希望对大家有所帮助。

19030

Java基础10 接口继承与抽象

在实施接口中,我们利用interface语法,将interface定义中独立出来,构成一个主体。interface为提供了接口规范。 在继承中,我们为了提高程序可复用性,引入继承机制。...interface多重继承Java继承中,一个衍生只能有一个基。也就是说,一个不能同时继承多于一个。...在Java中,interface可以同时继承多于一个interface,这叫做多重继承(multiple inheritance)。...抽象与具体 Java中提供了抽象(abstract class)语法,用于说明及其方法抽象性。...另一个方法happyFood()并不是 当一个中出现abstract方法时,这个声明必须加上abstract关键字,否则Java将报错。一个abstract不能用于创建对象。

684100

Java继承和抽象练习题

4;调用长颈鹿对象geat()方法 创建兔子对象 r,年龄赋值为1,,腿个数赋值为4;调用兔子对象reat()方法 继承 **   按要求编写一个Java应用程序: (1)编写一个矩形Rect,...两个构造方法:     一个带有两个参数构造方法,用于将width和height属性初化;     一个不带参数构造方法,将矩形初始化为宽和高都为10。         ...两个构造方法:     带4个参数构造方法,用于对startX、startY、width和height属性初始化;     不带参数构造方法,将矩形初始化为左上角坐标、长和宽都为0矩形; 添加一个方法...慕容紫英去散步(和欧阳青青) 慕容紫英用带有阳刚之气声音对欧阳青青说:我会守护你一生一世 欧阳青青微笑着用于甜美的声音对慕容紫英说:有你在我就安心....定义Girl,继承Person 成员变量 脸型(String face) 成员方法: 重写父  void say(String content) 方法 输出格式: 欧阳青青微笑着用于甜美的声音对慕容紫英说

51420

Java 继承Thread和实现Runnable接口区别

ava中线程创建有两种方式: 1.  通过继承Thread,重写Threadrun()方法,将线程运行逻辑放在其中 2. ...当我们做这个系统时候可能会想到两种方式来实现,继承Thread或实现Runnable接口,现在看一下这两种方式实现两种结果。...我们不妨做个比喻,其实刚程序,继承Thread,我们相当于拿出三件事即三个卖票10张任务分别分给三个窗口,他们各做各事各卖各票各完成各任务,因为MyThread继承Thread,所以在new...用图表示如下 在我们刚接触时候可能会迷糊继承Thread和实现Runnable接口实现多线程,其实在接触后我们会发现这完全是两个不同实现多线程,一个是多个线程分别完成自己任务,一个是多个线程共同完成一个任务...其实在实现一个任务用多个线程来做也可以用继承Thread来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。

1.5K70

Java基础10 接口继承与抽象

点击上方“Java团长”,选择“置顶公众号” 干货文章第一时间送达! 在实施接口中,我们利用interface语法,将interface定义中独立出来,构成一个主体。...interface多重继承 ---- 在Java继承中,一个衍生只能有一个基。也就是说,一个不能同时继承多于一个。...在Java中,interface可以同时继承多于一个interface,这叫做多重继承(multiple inheritance)。...抽象与具体 Java中提供了抽象(abstract class)语法,用于说明及其方法抽象性。...另一个方法happyFood()并不是 当一个中出现abstract方法时,这个声明必须加上abstract关键字,否则Java将报错。一个abstract不能用于创建对象。

38920

JavaString能否被继承?为什么?

不能被继承,因为String有final修饰符,而final修饰是不能被继承。...Java对String定义: public final class String implements java.io.Serializable, Comparable, CharSequence...{ // 省略...  } final修饰符用法: 1.修饰   当用final修饰一个时,表明这个不能被继承。...第一个原因是把方法锁定,以防任何继承修改它含义;第二个原因是效率。在早期Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来任何性能提升。...final和static区别: 很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final作用是用来保证变量不可变。

1.8K60

Java子类与父之间对象转换(说明继承

参考链接: 父和子类在Java中具有相同数据成员 在使用Java多态机制时,常常使用一个特性便是子类和父之间对象转换。...向上转换比较直观,总是能够将一个子类实例转换为一个父对象,继承角度,这个特性很容易理解:继承是一种“是一种”关系,从父派生出子类,我们都能理解为,子类总是父一个实例。...这就要考虑到,在继承关系中,有一些方法是不适合由父定义并由子类继承并重写,有些方法是子类特有的,不应该通过继承得到,且子类可能也会有自己特有的成员变量,那么在使用多态机制时候,若我们要通过父类型变量使用到这些子类特有的方法和属性的话...一个典型例子便是标准库中数据类型包装:Integer,Double,Long等,它们都继承自Number,且它们都有一个方法叫做compareTo用于比较两个同样类型。...首先,父变量向子类转换必须通过显式强制类型转换,采取和向上转换相同直接赋值方式是不行,;并且,当把一个父类型变量实例转换为子类型变量时,必须确保该父变量是子类一个实例,继承角度来理解这些原因

3.5K20

java中带继承加载顺序详解及实战

一、背景:   在面试中,在java基础方面,加载顺序经常被问及,很多时候我们是搞不清楚到底加载顺序是怎么样,那么今天我们就来看看带有继承加载顺序到底是怎么一回事?...下面让我们修改一下两个中静态代码块和静态成员变量位置并重新运行 3.修改后代码 1 package com.hafiz.zhang; 2 3 public class Fu 4 {...三、测试结果 由测试结果可知:程序首先加载,然后再对进行初始化。 加载顺序为:先加载基,基加载完毕后再加载子类。 初始化顺序为:先初始化基,基初始化完毕后再初始化子类。...关于继承初始化机制,首先执行含有main方法,观察到Zi含有基Fu,即先加载Fustatic变量,再加载Zistatic变量。...加载完static变量之后,调用main()方法,new Zi()则先初始化基基本变量和构造代码块,再调用基构造方法。然后再初始化子类Zi基本变量和构造代码块,再执行子类构造函数。

40220
领券