当前位置: 首页 > news >正文

添砖Java之路(其八)——继承,final关键字

目录

继承:

super关键字:

方法重写:

继承特点:

继承构造方法:

final关键字:


继承:

意义:让类于类之间产生父类于子类的关系,子类可以直接使用父类中的非私有成员(包括方法与成员变量)  。

extends关键字就是定义声明父类。
格式:public class 子类 extends 父类。
 

对于基础的我就不赘述了,我们直接讲一些实用一点的操作。

super关键字:


举个例子

class Fu{int num=10;
}class Zi extends Fu
{int num=20;public void Fuc(){System.out.println(num);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}

这里面的主方法会打印什么呢?

如果我们想打印父类里的10我们需要用到super

结果就会变为10

可见super可以用来区分父子类里面的相同成员。


方法重写:


这里的方法重写与方法重载不一样哟!
当字父子类出现完全一摸一样的方法时, 在创建子类对象调用方法时会优先调用子类的方法的逻辑。这其实就是子类的方法对父类的方法进行了方法重写。且我们通过@override识别方法重写。
如:父子类都有Fuc方法
 

class Fu{int num=10;public void Fuc(){System.out.println("666");}
}class Zi extends Fu
{int num=20;@Override//如果这没报错就是方法重写public void Fuc(){System.out.println(555);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}

打印的是555

那我们怎么调用到父类的方法呢,就是用super
 

class Zi extends Fu
{int num=20;@Overridepublic void Fuc(){super.Fuc();System.out.println(555);}
}

两个方法都打印了。
其实方法重写作用就是我们对父类方法的修改和增强。
tip:私有的父类不能重写,子类在重写时访问权限一定要大于等于父类的方法。



继承特点:


Java继承只支持单继承,不支持多继承,但支持多层继承。

单继承,多继承:就是只能继承一个父类,不能继承多个类。
多层继承就像这个图一样:

继承构造方法:


构造方法不支持继承,所以构造方法需要自己写,子类在初始化之前需要对父类进行初始化,而且所有的类构造方法中有隐藏了一句supper()代码,这是用来调用父类的无参构造。
 

我们先简单理解一下super();

class Fu{int a;int b;public Fu() {}
}class Zi extends Fu
{int c;int d;public Zi() {}public  void Func(){System.out.println(""+a+b+c+d);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Func();}

这次会打印什么呢?

可见他将abcd全部都初始化了,就证明了调用了子父类的无参构造。
 

那为什么说所有类都有super()呢?

其实所有的类,直接或间接的继承了object类,这里不多说,但是可以证明的是每个类都有除本身外其他的一些方法如:

final关键字:


对于final关键字其实就感觉像是c/c++里的const
特性:
1.修饰方法就表明是最终方法,该方法不能被重写。
2.修饰类就表明是最终类,该类不能被继承。
3.修饰变量说明是常量,不能再次被赋值(类似于const修饰的变量)。

tip:final修饰成员变量时不能被修饰默认值,说明就被修饰的变量一定要初始化,要么直接声明定义在一起,要么在构造方法里初始化。


final修饰的规范:全用大写,用下划线来分割单词如:MAX_NUM

http://www.lryc.cn/news/349015.html

相关文章:

  • 一篇详解Git版本控制工具
  • 谷歌邮箱2024最新注册教程
  • Spring事务深度解析
  • 机器学习周报第41周
  • gin框架学习笔记(三) ——路由请求与相关参数
  • HTML常用标签-多媒体标签(图片、音频、视频)
  • Flutter 中的 AnimatedIcon 小部件:全面指南
  • 0510Goods的Maven项目
  • 使用Pyramid、Mako和PyJade生成 HTML
  • 什么是Facebook付费广告营销?
  • 面对.halo勒索病毒,如何有效防范与应对?
  • JSON 转为json串后出现 “$ref“
  • Nachi那智不二越机器人维修技术合集
  • C++类与对象基础探秘系列(二)
  • MyBatis-Plus核心功能详解:条件构造器、自定义SQL与Service接口
  • 莆田市C++专项选拔第二轮题4
  • AtCoder Regular Contest 177
  • 【C++】 C++ 编写 鸡兔同笼程序
  • [动画详解]LeetCode151.翻转字符串里的单词
  • 如何使用 ArcGIS Pro 制作地震动画
  • Unity 初步了解
  • 爬虫学习(4)每日一笑
  • 生产环境节点扩容方案
  • Spring线程池配置
  • Unity学习笔记---物理引擎
  • Vue与Java使用AES加密与解密
  • B/S版+java开发的医院绩效考核系统maven+Visual Studio Code 医院绩效考核管理系统 提升医疗服务质量的关键
  • 汇昌联信科技:拼多多电商的运营流程有哪些?
  • AI大模型探索之路-训练篇20:大语言模型预训练-常见微调技术对比
  • 现代 c++ 一:c++11 ~ c++23 新特性汇总