day08 final关键字&面向对象——多态&抽象类、方法&向上、向下转型
day08
final关键字
最终的不可更改的
特点:
1)修饰类,类不能被继承
2)修饰方法,方法不能被重写
3)修饰成员变量(变为常量),值不能修改,名字大写,声明同时给常量赋值
main方法中
1)修饰基本数据类型,基本数据类型不能改
2)修饰引用类型,内存地址不能被改变,但地址内的值可以
@Override//注解
String的底层是final修饰的char类型的数组
String就是final修饰的常量类
所以String被称为字符串常量
面向对象三要素——多态
没有继承就没有多态,生成的对象在调用父类的方法时,如果方法被子类重写,则调用的时子类重写的方法
代码当中体现多态性,父类引用指向子类对象
父类名 对象名 = new 子类名();
Java中,有两种形式可以实现多态:继承和接口
方法的重载实现的是编译时的多态性(也成为前绑定),重写实现的是运行时的多态性(也称后绑定)
抽象类
定义:
抽象类不能被实例化,它的作用是提供给其他类进行继承
抽象关键字abstract
public abstract class Father{
public abstract void fun1();
String name;
private int age;
public void fun2(){
}
}
public class Son extends Father{
public void fun1(){
}
}
特点
抽象方法
被abstract修饰,只有方法签名,没有方法体,可以被子类重写
public abstract void fun1();
接口
接口只有方法签名
interface声明接口关键字
接口特点
接口只有方法签名和静态常量
接口的变量默认补全public final static
接口签名方法,默认使用public abstract修饰
一个类可以实现多个接口,Java中遵循单继承多实现,先继承后实现
被继承后必须重写所有方法
public class Son extends Father implements IPerson,IPlayer{
public void fMethod(){
}
public void IPMethod(){
}
public void IPlMethod(){
}
}
byMyself
接口可以继承接口,继承时可以不用重写父类接口的方法(可能因为接口做不到实例化)
类继承接口必须重写方法,否则报错
接口之间不能相互实现
优点:
解决单继承的问题(类只能单继承,但可以实现多个接口)
接口可以实现并行开发
便于重构
向上转型
父类类型创建子类对象
在此有Father类,Tom主类和Son类继承Father类
Father f = new Son();
向下转型
只有Object有向下转型的可能
Son f = new Father();//不能成功
Son f = (Son) new Father();//语法可以通过,但不建议
//先不说
day08 final关键字&面向对象——多态&抽象类、方法&向上、向下转型的更多相关文章
- 重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)
1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关; 主要应用于系统升级. 2.final 关键字: 可修饰:1.类-->被修饰后该类不能被继 ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
- 抽象类、final关键字、多态
1.1 抽象类 1.1.1 抽象类概念 C extends B,B extends A,在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 例如:人 ...
- 重写、super关键字、final关键字、多态、子类型转换、抽象的初步了解
重写 含义 在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖. 重写与重载的 ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
- Java中final关键字修饰变量、方法、类的含义是什么
Java中的关键字final修饰变量.方法.类分别表示什么含义? 先看一个简单的介绍 修饰对象 解释说明 备注 类 无子类,不可以被继承,更不可能被重写. final类中的方法默认是final的 方法 ...
- java 多态 向上 向下转型
向上转型 将子类对象当作父类对象 子类对象------>父类对象 先实例化子类 父类 父类对象 = 子类实例 package test2; class Father{ public vo ...
- java基础值向上向下转型
1.父类引用可以指向子类对象,子类引用不能指向父类对象. 2.向上转型:子类引用的对象转换为父类类型称为向上转型,把子类对象直接赋给父类引用叫upcasting,向上转型不用强制转型(类似于低精度赋给 ...
- final关键字、多态 (札记)
目录 protected fianl 子父类中同名的 private 方法 java中的前期绑定 免疫多态 谁先被执行,构造器 还是 初始化? 协变返回类型 <Thinking in java& ...
- python之面向对象函数与方法,反射,双下方法
一.函数和方法 1.函数和方法的区别 函数: 全都是显性传参,手动传参,与对象无关 方法: 存在隐性传参,与对象有关 1.1通过函数名可以判断 len()就是函数 str.count()就是方法 de ...
随机推荐
- Windows 10 索引设置
有时候想找一下电脑上的某个文件,但是只记得关键字不记得文件名的信息了.这个时候就会尝试在Windows的窗口中搜索.不过有时候明明文件存在,但是无法找到文件.这个时候就需要检查索引设置了.https: ...
- 【译】CLR类型加载器设计
前言 本文翻译自BotR中的一篇,原文链接 Type Loader Design ,可以帮助我们了解CLR的类型加载机制(注意是Type类型,而不是Class类),文中涉及到术语或者容易混淆的地方,我 ...
- 在图片不被裁剪时opencv绕图片中任意点旋转任意角度
opencv绕图片中任意角度旋转任意角度 最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是 ...
- 了解Pytorch|Get Started with PyTorch
一个开源的机器学习框架,加速了从研究原型到生产部署的路径. !pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple import ...
- 【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问
前言:目前翻译都是在线的,要在C#开发的程序上做一个可以实时翻译的功能,好像不是那么好做.而且大多数处于局域网内,所以访问在线的api也显得比较尴尬.于是,就有了以下这篇文章,自己搭建一套简单的离线翻 ...
- Apollo 中配置String、Map和List和默认值
摘要:在Apollo 中,配置String.Map和List等类型的信息,同时设置默认值. 综述 随着业务需求的变更,需要在Apollo中配置一个Map<String, List>类型 ...
- POJ3107 Godfather (树的重心)
又是一道模板题...... 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using ...
- 洛谷P1884 [USACO12FEB]Overplanting S (矩形切割)
一种矩形切割的做法: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const in ...
- 代码随想录第十三天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
第一题150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. ...
- mongodb基础整理篇————副本概念篇[外篇]
前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...