尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Java类的继承基础笔记:继承与重写

Java类的继承基础笔记:继承与重写 前言本文面向编程零基础小白用生活化案例通俗讲解 Java 中类的继承与重写核心概念、组成要素与完整实操流程手把手演示继承、重写完整可运行代码示例。一、核心概念1.继承继承是面向对象编程的三大特性之一它是Java编程语言的基础也是基石、核心。继承通常指的是允许一个类子类拥有另一个类的“属性”与“方法”详见技术笔记“类与对象”就像儿子继承父母的基因。一个子类只能继承一个父类就像一个孩子只能有一个亲生父亲。父类可以有不止一个子类就像父亲可以有很多孩子。但一个类可以继承多个接口详见“接口与独立监听器类”于是一些重复的操作比如你的项目需要好几个个玩家角色而它们需要实现的功能大差不差的话就不需要写好几遍而是写一个父类在让它们继承就可以了节省了很多时间而且需要全部做调整也不需要一个一个调整直接对父类进行编辑就可以了这是继承的用处其中之一。语法就像这样publicclass子类extends父类{//这里面继续写子类特有的属性和方法}2.重写指的是子类对父类方法的重新编辑。前面有用多个玩家角色举例那么如果说这些玩家角色需要的功能基本上大差不差但再怎么样总会有一些情况会有细微差距比如玩家A、B都需要同样的移动模版但玩家A需要近战技能玩家B需要拥有远程技能。这个时候就可以进行重写把需要修改的父类方法写成我们需要的那样不需要修改的父类方法不用动。于是这样就可以满足一定程度的共同需求以及不同需求。重写就像这样这里用我的示例代码但猫来举例Override//声明我要重写了publicvoideat(){//必须与父类的方法名、参数、返回值完全一样super.eat();// 先执行父类的“吃东西”System.out.println(name吃的是鱼肉);// 再追加猫特有的行为}二、继承、重写的组成要素在 Java 中实现继承与重写需要以下几个核心要素共同配合父类基类、超类父类是被继承的类它定义了子类共有的属性和方法是整个继承体系的“基础模板”。在代码中用普通的 class 定义就行例如publicclassAnimal{//内容、方法……}子类派生类子类是通过继承得到父类成员属性、方法的类它可以在父类基础上添加新的属性和方法也可以重写父类的方法。子类用 extends 关键字标记。不过注意父类中private修饰的成员在子类对象中确实存在但子类无法直接访问必须通过父类的公共方法如 setSound间接操作。例如publicclassCatextendsAnimal{...}extends 关键字extends 是 Java 中实现继承的语法标记写在子类类名后面表示“该类继承自某个父类”。它是实现继承的必要的语法。继承的属性子类可以继承并直接使用父类中非private的属性和方法。例如父类定义了 public String name子类可以直接通过 cat.name “猫”; 来赋值。父类中 private 的成员虽然存在于子类对象中但子类无法直接访问必须通过父类的公共方法如 setSound间接操作。Override 注解Override 是一个可选的注解写在重写方法的上方。它能帮助编译器检查你是否正确地重写了父类的方法如果方法名写错或参数列表不一致编译器会报错起到“安全绳”的作用。super 关键字super 用于在子类中调用父类的方法或构造器。在重写的方法中如果还需要执行父类的原有逻辑可以用 super.方法名() 先调用父类版本再追加子类特有的行为从而实现“在父类功能基础上扩展实现特殊需要”。重写的方法子类中与父类同名、同参数、同返回类型的方法就是对父类方法的重写。重写的方法用 “Override” 标记方法体内部替换成子类自己特有的实现逻辑。以上七个要素共同构成了 Java 中继承与重写的完整机制。三、完整实操案例父类publicclassAnimal{//定义类publicStringname;//定义公共属性privateStringsound;//定义私有属性publicvoidsetSound(Strings){//间接调用私有属性的方法sounds;}publicvoidcall(){//方法System.out.println(name发出了sound的叫声);}publicvoideat(){//方法System.out.println(name吃了食物);}}子类publicclassCatextendsAnimal{//用extends进行继承Override//声明重写publicvoideat(){//重写super.eat();//保留父类原有功能System.out.println(name吃的是鱼肉);//添加新功能}}测试类publicclassManage{//定义类publicstaticvoidmain(String[]args){//主函数用于启动程序CatcatnewCat();//对子类创建对象cat.name猫;cat.eat();//调用方法cat.setSound(喵喵);cat.call();//调用方法}}五、个人收获总结其他人已经被继承、接口、子类、父类、重写搞得晕头转向的时候我已经全部参透了——才怪我也学了很久才理解什么是继承特别是这篇文章没有提到的接口。如果可以学会并活用这些才算是真正入门了Java这门语言所以这些内容虽然基础也不难但对我、对所有学习者而言都是必不可少的绕不开的东西。
返回列表