JavaSE基础(4)继承

【0基础学java】教学日志:javaSE-面向对象6-面向对象前4章上机作业点评,主要涉及继承、封装、多态三个章节的内容 目录 一、面向对象第一章上机作业参考答案(略) 二、面向对象第二章上机作业参考答案: 三、面向对象第三章上机作业参考答案: 1、上机练习1已在第三章博客中编写,请参考; 2、上机练习2 四、面向对象第四章作业参考答案: 1、上机练习—使用多态实现主人领养宠物并与宠物玩耍 2、上机练习——计算一次租赁多辆汽车的总租金 3、上机练习——购置新车 五、答疑,主要是关于Object对象、抽象类的使用、instanceof的使用、向上转型和向下转型的理解。 1、Object对象的使用 2、i. 阅读详情

JavaSE基础—继承和反射

1、继承

说到继承,可能就要先聊到访问权限。这个跟继承也是息息相关。

1.1 访问权限

Java中有三个访问权限修饰符:private、protected和public。如果不加上访问修饰符,那么就是在包级别中可见。

可以对类或类中的成员(字段和方法)加上访问修饰符。

  • 类可见表示其它类可以用这个类创建实例对象。
  • 成员可见表示其它类可以用这个类的实例对象访问到该成员。

其中,protected 用于修饰成员,表示在继承体系中成员对于子类可见,但是这个访问修饰符对于类没有意义。

当然,主要内容是继承,那么我们进行子类重写父类并且实现其细节时,我们要保证子类的方法访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例去代替。

1.2 封装

我们普通的程序员就像是调用一些常用的工具去实现普通的功能。但是我们不会去过多讨论内部是如何实现的,模块之间只通过它们的 API 进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念被称为信息隐藏或封装。

这个时候设置其访问权限应该是尽可能让每个类或者成员不被外界访问。

结合封装的内容后,我们就要实现我们自身的原则了。即保护我们程序代码的封装并且具有一定的保护性质:

  • 字段不能共有,这样子用户可以随意修改。

1.3 抽象类和接口

1.抽象

抽象类和抽象方法都是使用abstract关键字进行声明。这时如果有一个类中包含抽象方法,那么这个类就要声明为抽象类。这是其一。

其次,抽象类和普通类的区别在于,抽象类不能被实例化只能被继承。

public abstract class AbstractClassExample {

    protected int x;
    private int y;

    public abstract void func1();

    public void func2() {
        System.out.println("func2");
    }
}
public class AbstractExtendClassExample extends AbstractClassExample {
    @Override
    public void func1() {
        System.out.println("func1");
    }
}
// AbstractClassExample ac1 = new AbstractClassExample(); // 'AbstractClassExample' is abstract; cannot be instantiated
AbstractClassExample ac2 = new AbstractExtendClassExample();
ac2.func1();

2.接口

接口是抽象类的延伸。在Java8前面,它可以看成是一个抽象类,就是不能有实现。

  • 在Java8开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。
  • 接口的成员(字段 + 方法)默认都是 public 的,并且不允许定义为 private 或者 protected。从 Java 9 开始,允许将方法定义为 private,这样就能定义某些复用的代码又不会把方法暴露出去。
  • 接口的字段默认都是 static 和 final 的。

使用接口:

  • 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Comparable 接口中的 compareTo() 方法;
  • 需要使用多重继承。

使用抽象类:

  • 需要在几个相关的类中共享代码。
  • 需要能控制继承来的成员的访问权限,而不是都为 public。
  • 需要继承非静态和非常量字段。

3.super

  • 访问父类的构造函数:可以使用 super() 函数访问父类的构造函数,从而委托父类完成一些初始化的工作。应该注意到,子类一定会调用父类的构造函数来完成初始化工作,一般是调用父类的默认构造函数,如果子类需要调用父类其它构造函数,那么就可以使用 super() 函数。
  • 访问父类的成员:如果子类重写了父类的某个方法,可以通过使用 super 关键字来引用父类的方法实现。

4.重写和重载

重写:

使用 @Override 注解,可以让编译器帮忙检查是否满足上面的三个限制条件。

  • 子类方法的访问权限必须大于等于父类方法;
  • 子类方法的返回类型必须是父类方法返回类型或为其子类型。
  • 子类方法抛出的异常类型必须是父类抛出异常类型或为其子类型。

重载:

存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。但是返回值不同,其它都相同不算是重载。

JavaSE-基础练习题 前言 部分练习题摘录自:Sun-Java程序员认证考试题库 部分练习题加入了自己的解析 还未整理完,待更 若有错误或补充,欢迎私信 一、Java入门 下列哪项不是JDK所包含的内容?(选一项)C A. Java编程语言 B. 工具及工具的API C. Java EE扩展API D. Java平台虚拟机 下列关于JDK、JRE和JVM的描述。哪项正确?D A. JDK中包含了JRE,JVM中包含了JRE B. JRE中包含了JDK,JDK中包含了JVM C. JRE中包含了JDK,JVM中包含了 阅读详情

相关推荐

hibernate继承关系映射和java反射机制的运用

hibernate继承关系映射和java反射机制的运用

java 反射 继承_Java Core-五.继承-详解反射机制

五.继承继承 定义:基于已有的类构造新类反射 定义:在程序运行期间发现更多的类以及属性的能力多态 定义:一个对象变量可以指示多种实际类型的现象动态绑定 定义:在运行时能够自动选择调用方法的现象5.1 类、超类和子类5.1.2 覆盖方法规则超类和子类中的方法签名相同(方法名和参数列表),返回值类型需要保证一样或者是返回值类型的子类(协变返回类型)覆盖和重载的区别覆盖是方法签名相同重载是方法名相同,参...

weixin_30613479的博客 321

四旋翼黑科技揭秘:如何利用PX4隐藏的角加速度数据提升控制性能

本文深入探讨了如何利用PX4飞控中隐藏的角加速度数据,结合增量非线性动态逆(INDI)控制方法,显著提升四旋翼无人机的控制性能。通过实战教程,指导开发者从数据订阅、INDI原理到代码实现,构建响应更快、鲁棒性更强的控制回路,有效应对突风与快速机动。

lake5的博客 719

Java核心卷一之继承和反射详解

目录 继 承 5.1 类、超类和子类 5.1.1 定义子类 5.1.2 覆盖方法 5.1.3 子类构造器 5.1.4 继承层次 5 . 1.5 多 态 5.1.6 理解方法调用 5.1.7 阻止继承:final 类和方法 5.1.8 强制类型转换 5 . 1.9 抽象类 5.1.10 受保护访问 5.3 泛型数组列表(详细会出一个专题) 5.4 对象包装器与自动装箱 5.7 反射 5.7.1 Class 类 5.7.3 利用反射分析类的能力 (等.

weixin_47277897的博客 857

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

Java|反射之获得继承关系

回顾:当我们获取到某个Class还可以用实例的getClass()最后一种获取Class的方法是通过,传入Class这ClassClassClass。

weixin_67497686的博客 1027

Multisim 11.0的安装破解汉化步骤

15:打开注册机,选择管理员运行,默认第一项,选择生成文件路径,这里不要随意选择,要找到你安装Multisim安装路径下Shard下的License Manager路径下,否则会报错,破解失败。14:后面会出现一个更新提示,选择否,然后选择重启电脑后,先不要选择重启电脑,在这里出现了问题(可能敲击回车,默认去重启电脑了),所以我说不要重启电脑,重启破解时右下角出现这,点击否。17:重启电脑,如果前面重启过,那可以跳过重启,应用程序下找到下图所示,启动。16:点击确认覆盖,路径下生成了该文件。

qq_53260940的博客 2371

Java反射05-继承关系

回顾: Class 对象:在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。通过Class实例得到类的信息的手段成为反射 Class对象获取的三种法法: //方法一:Class class对象名 = 类名.class Class cls1 = String.class; //方法二:Class class对象名 = 对象.getClass() S...

qq_41521264的博客 297

无线自组织网络基础知识

参考书籍:《无线自组织网络路由协议及应用》 目录第一章 绪论1.1 无线自组织网络概述1.1.1 无线自组织网络的定义及分类1.1.2无线自组织网络的主要特点1.1.3无线自组织网络的应用与发展1.无线自组织网络的应用2.无线自组织网络的起源和发展1.2典型的无线自组织网络1.2.1移动Ad Hoc网络1、移动Ad Hoc网络的定义2.移动AdHoc网络的特点3.移动Ad Hoc网络的应用1.2....

逸凌Time 2万+

用户消费行为分析(MapReduce实现,Hive分析)

一、题目要求 数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为 数据

紫烟的博客 3013

java获取继承类_java反射中获得类的所有方法和继承方法

public String[] getAllOwnMethodNames(){ArrayList allMethods = new ArrayList();for(Method aMethod : myClass.getDeclaredMethods()){allMethods.add("Method Name : "+aMethod.getName()+" , Full Name : "+aMe...

weixin_36003005的博客 1533

AURIX TC397开发板到手第一步:用iLLD库驱动LED流水灯(附完整代码)

本文详细介绍了如何使用英飞凌AURIX TC397开发板和iLLD库实现LED流水灯效果。从开发环境配置到硬件连接,再到完整的代码实现,逐步引导开发者完成项目。文章还提供了优化建议和常见问题解决方案,帮助嵌入式开发新手快速上手。

weixin_30911451的博客 390

JavaSE学习笔记_4:Java继承

Java继承   一、继承(面向对象的第二个特征) 1、继承的概述 我们知道一个学生类是通过多个具体的学生个体,将他们当中的共性内容抽取出来所形成的类或者描述。工人类亦是如此。但是现在发现学生类和工人类中也有许多共性内容,因此将它们当中的共性的内容继续向上抽取形成一个Person类。让学生类和工人类和这个Person类具备某种关系,Person类中的非私有内容学生类和工人类中隐形的有一份,

java_cm66的博客 585

《嵌入式最全面试题-Offer直通车》目录

嵌入式领域蓬勃发展,嵌入式工程师成为众多科技企业争抢的热门人才。如果你渴望在嵌入式面试中脱颖而出,成功斩获心仪的 offer,那么《嵌入式最全面试题 - Offer直通车》将是你的绝佳选择。本专栏是优快云是热门专栏,100多篇文章,总字数过百万。每月新增订阅用户过百,现在是优惠价9.9元,后面要逐渐恢复原价,早订阅早受益。本专栏精心整理了众多超万字的精华内容,总计达数十万字的嵌入式面试题总结。涵盖从嵌入式基础知识到各大厂面试真题,从驱动开发到操作系统,从硬件到软件等各个方面。

大模型大数据攻城狮的专栏 8400

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JavaSE阶段回顾(4)Java特性之封装,继承

封装 封装是与对象有关的一个重要概念 形式:将数据和行为组合在一起,并对对象的使用者隐藏数据的实现方式 属性由变量表示,属性名称由类的每个对象共享 每个特定的对象都有一组特定的实例属性值,这些值的集合就是这个对象的当前状态,只要向对象发送一个消息,它的状态就有可能发生改变 封装的特性能够让服务提供者把它服务的细节隐藏掉,你只需要提交请求与传递它需要的参数,它就会给你返回结果,而这个结果是如何产生的,经过了多少复杂运算,经过多少次数据读取,你都不用管,只要它给你结果就好了。 封装使得对代码的修改更加安全和容易

weixin_46465506的博客 152

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【javase复习】## day 4 继承的内存分析、super、final ##

继承继承的主要目的是 描述两个类的关系 和 减少重复代码注意细节: ①父类的私有成员不能被继承 ②父类的构造函数不能被继承 ③创建子类对象的时候java编译器会默认加上super()去先调用父类的无参的构造方法以赋值一些变量。我们知道一个类如果自定义了构造方法,就不会被编译器默认加上无参构造方法,那么这个时候去继承要注意: ① 在Fu类中声明一个无参的构造方法 ② 在Zi类中明确调用父类带

欢乐逗你妈 372

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaSE——面向对象高级一(3/4)-面向对象三大特征之二:继承(初步认识继承、了解继承的好处)

1、什么是继承?继承后有啥特点? 继承就是用extends关键字,让一个类和另一个类建立起一种父子关系。 子类可以继承父类非私有的成员。 2、带继承关系的类,JaVa会怎么创建它的对象?对象创建出来后,可以直接访问哪些成员? 带继承关系的类,java会用类和其父类,这多张设计图来一起创建类的对象。 对象能直接访问什么成员,是由子父类这多张设计图共同决定的,这多张设计图对外暴露了什么成员,对象就可以访问什么成员。

li13437542099的博客 441

JavaSE-10.2.4【继承中成员方法的访问特点】

1 package day1.yppah02; 2 3 /* 4 2.4 继承中成员方法的访问特点 5 6 通过子类对象访问一个方法 7 1. 子类成员范围找 8 2. 父类成员范围找 9 3. 如果都没有就报错(不考虑父亲的父亲…) 10 11 2.5 super内存 12 13 对象在堆内存中,会单独存在一块super区域,...

yubaby 93

1.4 面向对象编程中级 对象的继承与super关键字-跟着韩老师学JavaSE

第四、五章的内容 对象的继承(超重要的概念)、super关键字

一碗菜粥的博客 693

javaSE-面向对象4-继承、super、方法重写、抽象类、抽象方法、final、Object类

继承: 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。 提高代码的复用性! extends的意思是“扩展”。子类是父类的扩展 不同的叫法:超类、父类、基类、子类、派生类 1. 使用继承 --编写父类 --编写子类,继承父类 --一个类只能继承一个父类 2.java中只有单继承,也就是从子类出发只能有一个直接父类。 二、继承的理解和super 1、super是直接父类对象的引用。 2、可以通过super来访问父类中被子类覆盖的方法或属性。 3、普通方法: .

qq_64116925的博客 207

JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......

什么是权限修饰符?权限修饰符有几种?各自的作用是什么?能够被访问的范围由大到小分别为:public、protected、缺省、private。在开发中,使用得最多的也就是public和private,其他两个权限修饰符只要求在看到源码时可以看得懂。也就是说,一个类不能继承多个父类;但一个类继承的父类,该父类还可以作为一个子类再继承父类,称为多层继承。例如: 也就是说,我们创建一个类的时候,如果没有继承类,那么就会默认继承Object类,为Object的子类;而如果已经继承了类,那么也是间接继承了Obje

li13437542099的博客 901

【0基础学java】教学日志:javaSE-面向对象4-继承、super、方法重写、抽象类、抽象方法、final、Object类

【0基础学java】教学日志:javaSE-面向对象4-继承、super、方法重写、抽象类、抽象方法、final、Object类 本章概述 本章属于面向对象第三章的内容,主要讲解继承、super、方法重写、抽象类、抽象方法、final、Object类等知识点。 目录 【0基础学java】教学日志:javaSE-面向对象4-继承、super、方法重写、抽象类、抽象方法、final、Object类 本章概述 一、继承 二、super【同上】 三、方法重写【同上】 四、抽象类、抽象方法(

jason的java世界 725

javaSE基础面向对象笔记(1)封装,继承,super和this区别,重写重载区别,常用的包,4个访问修饰符,static修饰符

java基础面向对象特征:封装 继承 super,this关键字,四种访问修饰符,常用的包,重写重载,static修饰符 封装 public class Person { //特征 private String name; private int age; private String gender; public Person(String name, int age, String gender) { //this()调用其他的构造方法,需要放在构造方法的第一行 this(name,

Echoxxxxx的博客 213

JavaSE基础(day10)(1)继承(2)访问控制(3)final关键字(4)对象创建的过程(5)多态

1.编程题 自定义Student类,属性有:学号和姓名,要求实现该类的封装。 2.编程题 自定义Singleton类,分别使用饿汉式 和 懒汉式。 作业: 今天内容: (1)继承 (2)访问控制 (3)final关键字 (4)对象创建的过程 (5)多态 1.继承(重中之重) 人类: 属性:姓名、年龄 行为:吃饭、娱乐 学生类 继承 人类: 属性:学号 行为:学习 教师类 继承 人类: 属性:薪水 ...

程序员哦的博客 271

【JavaSE】JavaSE之继承和多态

深入浅出了解继承和多态,图文并茂让你没齿难忘QWQ~~

bit me的博客 1214
上一篇: JavaSE(3)关键字和Object
下一篇: JavaSE(5)泛型、注解和特性
Xiao艾扶
博客等级 码龄7年 187粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值