Java--继承和super关键字
一、Java中方法的参数传递(重点)
Java中参数传递都是值传递
Java中的值分两种:
1、如果传递的参数是基本数据类型: 传递的值就是基本数据类型的值。
传递的时候,其实是把基本数据类型的值,复制一份,传递到方法内部
2、如果传递的参数是引用数据类型: 传递的值是对象的地址值。
把地址值复制一份传递给方法的参数。
二、面向对象特征2:继承
面向对象三大特征:1、封装 2、继承 3、多态
继承的语法: extends 被继承的类
继承的特点:
1、在继承的时候,被继承的类我们称之为父类或超类(superclass)、
基类(base class)
2、继承别人的类,称之为子类。
3、继承的时候,子类可以继承父类的所有的非私有成员! 私有成员无法继承。
4、一个子类只能继承一个父类,不能同时继承多个父类。Java中的继承是单继承。
(亲爹只有一个!!!)
5、一旦继承后,那么父类的非私有的成员,就成为了子类的成员。
6、子类继承父类之后,也可以继续添加自己的属性和方法。
子类一般比父类具有更多的功能。
7、一个父类可以有多个子类。
8、java不支持多继承。 支持多重继承。b继承a, c可以继承b
9、子类不能继承父类的构造方法!
super关键字
1、super关键用在子类中,可以访问父类的指定的属性或方法。 相对this,this只能访问当前类的属性和方法。
注意:使用super的访问父类的属性和方法的时候,直接去父类中寻找,而不会在
子类中寻找。使用this访问当前对象的属性和方法的时候,是先在当前类中
寻找,如果当前找不到,再去父类中循环。
把super理解成一个父类的隐式的引用
2、在创建子类对象的时候,子类的构造方法如果没有显示的使用this(...)来调用 本类的其他构造方法。那么这个构造方法,一定会默认调用父类的无参构造方法。 可以使用super(实参)来显示的调用父类的指定的构造方法
注意:1、子类的构造方法既没有this(...),也没有super(...).则相当于
这个构造方法的首行是super();
2、使用super(...)调用父类的构造方法的时候,必须放在构造方法的首行。
3、在同一个构造方法内部,不能同时使用this()和super()只能使用一个。
类中放的成员:
属性、方法、构造方法、构造代码块、静态代码块、静态方法。
创建子类对象。
父类静态代码块-->子类静态代码块-->父类的构造代码块-->父类构造方法-->子类构造代码块-->子类的构造方法
静态优先 --> 父类优先 --->构造代码块优先--->构造方法
| 关键字 | 属性 | 方法 | 构造方法 | 作为参数 |
|---|---|---|---|---|
| this | 当前属性 | 当前对象的方法 | 当前类的构造方法this() | 作为参数传递 |
| super | 父类属性 | 父类的方法 | 访问父类的构造方法super() | 不能作为参数 |
三、访问权限
| 修饰符 | 同一类 | 同一包 | 子类中(不同包) | 任意地方 |
|---|---|---|---|---|
| private | yes | |||
| default(默认) | yes | yes | ||
| protected | yes | yes | yes | |
| public | yes | yes | yes | yes |
注意:
1、default有的时候,称之为包访问权限。只有同一个包中才可以访问。
2、这四个权限都是用在类的成员中的。只能用到属性和方法。
3、局部变量不允许添加权限修饰符。
4、defalut默认访问权限,不建议使用。任何时候都要选择相应的访问修饰符,
不建议使用默认的。
5、在子类中使用protected的属性或方法的时候,只能通过super或this来访问。
不能通过父类的对象来访问。
6、这四个访问权限,只能有两个可以用到外部类中。public、default。如果
一个类是使用的public的权限,那么类名必须和文件名保证一致。
四、方法的覆写
当父类的方法的功能无法满足子类的需求,这个时候子类可以根据自己的业务 业务需求,在重新定义继承的那个方法。 方法的覆写(重写、override)
覆写的规则:
两同、两小、一大
两同:
方法名相同、参数列表相同
两小:
1、子类的返回值类型必须是父类的返回值类型的子类或者与父类相同。
返回类型必须有子父类的关系。
2、子类抛出的异常,与父类相同,或者是父类异常类型的子类。
一大:
子类的方法的访问权限,不能比父类小。
五、继承中静态方法的特点
子类可以继承父类的静态方法,但是不能覆写父类的静态方法。
六、final关键字
final可以修饰类、变量、方法
1、final修饰类:表示这个类,不能有子类。不能被继承。太监类
2、final修饰方法:表示这个方法不能被子类覆写,可以被子类去继承。
3、final修饰变量:表示这个变量就成为常量!!!意思是说这个常量, 只能被赋值一次!!!
注意:
1、final修饰成员变量的时候,必须手动赋值,不能让虚拟机赋默认值。
2、形参也可以定义为final,但是这个时候不能再去手动赋值。他的值在调用方法的时候已经赋过值了。
3、final修饰变量之后,变成常量,命名的时候,所有字母大写,不同的单词之间用下划线_连接。
七、抽象类
用abstract修饰的类,就叫抽象类。
抽象方法:只有方法声明,没有方法体,用abstract修饰的的方法。
抽象类的特点:
1、抽象必须用abstract修饰。
2、抽象类中可以有普通有的所有成员,另外他可以有抽象方法。
3、抽象类不能直接创建对象!!!只能通过他的非抽象子类来创建对象。
4、抽象类的子类,必须实行抽象类的所有抽象方法。如果不能完全实行父类的抽象方法,则必须把这个子类也标记为抽象类。
5、抽象类可以没有抽象方法!但是,抽象方法必须放在抽象类中。
6、抽象类和抽象方法能不能用final修饰? 不能
7、抽象方法能不能是private的? 不能
8、抽象方法能不能是protected? 能
9、抽象方法能不能是static的? 不能
八、一战多态
Pet pet = new Dog();
两边类型不一致的情况,我们就称之为多态!
Pet pet:称之为编译时类型
编译能否通过,看编译时类型。
书写代码的时候,能不能编译通过,看编译时类型有没有相应的方法。
new Dog():称之为运行时类型
运行的时候的具体结果,看运行时类型!
8.1 类型的转换
自动类型转换 自动类型提升、向上转换
把子类类型的对象,赋值给父类的引用!
Pet pet = new Dog(); //自动类型转换
强制类型转换
把父类类型的对象,赋值给子类类型的时候,需要强制类型转换!
能够强制类型转换,必须保证对象的实际类型,是要转换去的类型。
instanceof 用这个去判断某个引用是不是属于某个类型
用法:对象引用 instanceof 类
Java--继承和super关键字的更多相关文章
- Java继承:super关键字、构造器、final用法
一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...
- java的继承 和super关键字 构造器
面向对象的特性二继承: 继承的好处: 1.减少代码的冗余.提高了代码的复用性 2.便于功能的扩展 3.为之后多态的使用,提供了前提 继承的格式: class A extends B{} A:子类.派生 ...
- Java: 类继承中 super关键字
super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...
- Java 继承extends、关键字super和this、多态、动态绑定
Manager 经理 extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...
- Java面向对象----继承概念,super关键字
继承概念: 继承需要符合的关系 is-a , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...
- 面向对象编程(十)——继承之Super关键字及内存分析
Super关键字
- 继承及super关键字
继承 继承的本质是对某一批类的抽象,从而实现对世界更好的建模 extend的意思是"扩展",子类是父类的扩展. Java中类只有单继承,没有多继承:儿子只能有一个亲生爸爸,一个爸爸 ...
- [Java学习]面向对象-super关键字;final关键字
super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...
随机推荐
- iOS 文件读写
#import <Foundation/Foundation.h> @interface Utils : NSObject +(void) writeFile:(NSString *) f ...
- winform的comboBox使鼠标滑轮修改值失效
目标: winform窗体很多combobox下拉框,当他们其中的一个获得焦点的时候,如果滚动鼠标就会改变下拉框的值,要实现让鼠标滚轮不对下拉框的值造成影响 如下代码直接拷贝粘贴,不用修改 方法一: ...
- 单位服务器发布tomcat的项目外网访问
首先 要有 外网IP 路由器做设置 开放端口(netstat -nao) 首先你要确定你有一个外网ip地址.如果你分配到的是一个局域网IP地址需要经过一系列的转换为外网ip地址 跟部署tomcat ...
- LightOJ 1141 Program E
Description In this problem, you are given an integer number s. You can transform any integer number ...
- 教学目标的表述方式──行为目标的ABCD表述法
教学目标应规定学生在教学活动结束后能表现出什么样的学业行为,并限定学生学习过程中知识.技能的获得和情感态度发展的层次.范围.方式及变化效果的量度.对每节课教学目标的准确表述,可以充分发挥教学目标在教学 ...
- maven的简单安装与配置
什么是Maven? Maven可以被理解成"知识的积累",也可以被翻译为"专家".它是一个项目管理工具. 它的主要服务即源于java平台的项目构建.依赖管理和项 ...
- Hadoop 重启各个节点
对于datanode可以在master中配置,然后在maste启动的时候,一并去启动这些节点 .对于死掉的节点,也可以通过以下命令启动 .重启挂掉的节点进入到 挂掉的机器 bin/hadoop-dae ...
- Yslow&PageSpeed– 诊断各种缓慢症状
Google的PageSpeed和yahoo的yslow是各位不可少的前端工具(同样也都是firebug的插件,安装了firebug之后才可以拥有她们),当各位无法用三寸不烂之舌收拾产品和各种大佬的时 ...
- 使用goldengate交付指定时间前的数据
在数据同步过程中,客户担心在源端误操作,比如truncate, drop, delete all等,在目标端也会立即同步,而无法挽救损失:因此,客户希望是目标端的数据比源端要慢一个时间点. 解决方案: ...
- Geetest 极验验证 验证图片拼图
今天要求做一个跟魅族官网登陆的一个验证效果一样的界面 是一个拖动滑动图片进行拼图 那个效果看着很好,刚开始拿到不知道好不好做 从网上搜资料发现这是一种“极验验证码” 让用户通过滑动拼图来进行验证. 网 ...