临沧网站建设公司招聘,网络广告设计课程,寮步镇网站仿做,做便民网站都需要哪些模块关于类与对象#xff0c;内容较多#xff0c;我们分为两篇进行讲解#xff1a;
#x1f4da; Java-继承与多态-上篇#xff1a;———— 就是本篇
#x1f4d5; 继承的概念与使用
#x1f4d5; 父类成员访问
#x1f4d5; super关键字
#x1f4d5; supe…关于类与对象内容较多我们分为两篇进行讲解 Java-继承与多态-上篇———— 就是本篇 继承的概念与使用 父类成员访问 super关键字 super 与 this 的区别 子类构造方法 继承方式 final 关键字 Java-继承与多态-下篇———— 下篇很快别急别急 ... ...
① 继承的概念
首先提到继承大家心里想到的是什么大概和我初听继承时一样也是想到了父 与 子。如果大家也有这样的想法那我要告诉大家这是对的~ 继承的定义
继承是面向对象编程的重要概念, 它允许一个类子类继承另一个类父类的属性和方法。 那么我们思考一个问题
我们之前学习类与对象的时候经常使用学生类来进行举例在我们仅仅使用学生类时确实不会出现什么错误也很少有代码的冗余但如果我们在定义学生类后我们还想定义小学生初中生高中生大学生又该怎么办呢
在我们学习继承之前那肯定就是对这四种年级的学生分别进行定义了 但是小学生初中生高中生大学生都有学号成绩年龄名字。而且也都会吃饭睡觉学习。大部分的属性和行为都是重复的而只有很少一部分内容是不重复的这就会造成非常多的冗余代码 那么此时我们就可以让小学生初中生高中生大学生去继承我们的学生类从而做到代码的复用而尽可能地减少代码的冗余~让我们继续往下看
② 继承的使用 继承的用法 Java继承的用法是通过使用关键字 extends 将子类与父类建立继承关系。 子类会继承父类的属性和方法并可以根据需要重写父类的方法或添加新的方法和属性。
class 父类 {// 父类的属性和方法
}class 子类 extends 父类 {// 子类的属性和方法
}
接下来我们看一看如何使用继承的方法去让小学生初中生高中生大学生去继承我们的学生类
使用图片的表述大概是这样的 而具体应该如何用代码实现呢 这就是小学生初中生高中生大学生去继承学生类的大体代码了~
③ 父类成员访问
了解了继承的大体使用方法接下来让我们对继承进行更深的一些了解
1.子类中访问父类的成员变量 子类可以访问父类的非私有成员变量包括公有、受保护和默认访问权限的成员变量。子类可以通过继承获得父类的成员变量并且可以直接使用它们。 而通过子类中访问父类的成员变量分为两种情况 子类和父类不存在同名成员变量 这就证实了子类可以通过继承获得父类的成员变量并且可以直接使用它们。 子类和父类存在同名成员变量 注意事项 如果访问的成员变量子类中有优先访问自己的成员变量。 如果访问的成员变量子类中无则访问父类继承下来的如果父类也没有定义则编译报错。 如果访问的成员变量与父类中成员变量同名则优先访问自己的。
2.子类中访问父类的成员方法
而子类中访问父类成员方法其实与访问成员变量也是大同小异 子类可以通过继承来访问父类的成员方法。子类可以直接调用父类的非私有方法并且可以在子类中进行重写。 通过子类中访问父类的成员方法分为两种情况 成员方法名字不同 成员方法名字相同 注意事项 通过子类对象访问父类与子类中不同名方法时优先在子类中找找到则访问 否则在父类中找找到则访问否则编译报错。 如果父类和子类同名方法的参数列表不同(重载)根据调用 方法适传递的参数选择合适的方法访问如果没有则报错
④ super关键字
super关键字的主要作用 用于表示父类的引用它可以用于调用父类的构造方法、访问父类的成员变量和方法。
super调用父类的构造方法 super访问父类的成员变量和方法 注意事项 只能在非静态方法中使用 在子类方法中访问父类的成员变量和方法
⑤ 子类构造方法
和继承这个词一样父类与子类也有同样的关系那就是先有父类后有子类。
所以在子类对象构造时会先调用子类构造方法然后执行子类的构造方法。 子类的构造方法可以通过使用super()关键字来调用父类的构造方法以初始化从父类继承的成员变量。 子类的构造方法可以有以下几种使用情况 子类调用父类的无参构造方法 子类调用父类的有参构造方法 那么父类与子类的构造方法都有什么关联呢 当我们定义无参构造方法时子类构造方法第一行会有隐藏起来的一个super()调用
我们可以看到子类构造方法中并无super()但仍不报错~这就证明了子类构造方法第一行会有隐藏起来的一个super()调用。 当我们定义有参构造方法时我们需要重新手动写一下子类构造方法中的super() 我们可以看到此时代码是报错的所以我们需要重新写一个对应的super() 这样就ok了~ 子类构造方法中调用父类构造方法时super()必须在开头位置 在同时调用父类和子类方法时同一类型情况下父类优先级大于子类 我们可以看到先打印了父类...后打印了子类...。
既然我们在类和对象的学习中我们学习到了代码块那我们也用用代码块 然后我们可以看一个小例题(记得回忆一下上篇文章中我们讲到的代码块优先级哦~)
import java.util.*;
class Animal {public String name;static{System.out.println(父类静态代码块);}{System.out.println(父类实例代码块);}public Animal() {System.out.println(父类构造方法);}
}
class Dog extends Animal {static{System.out.println(子类静态代码块);}{System.out.println(子类实例代码块);}public Dog() {System.out.println(子类构造方法);}
}
public class Main {public static void main(String[] args) {Dog dog new Dog();}
}运行后的结果是 知识归纳 父类的静态代码块优先级高于子类的静态代码块 父类的实例代码块与构造代码块先后接连执行 子类的实例代码块与构造代码块先后接连执行
⑥ super 和 this 的区别
上述内容观看完毕后我们也算是把 super 和 this 关键字都学习到了那么两者看似极为的相似但却也有许多的不同之处 this关键字用于引用当前对象的成员而super关键字用于引用父类对象的成员。this在实例方法和构造方法中使用而super主要在子类中使用。this可以引用当前对象的成员变量和方法super可以引用父类的成员变量和方法。this可以用于在构造方法中调用其他构造方法super可以用于在子类构造方法中调用父类构造方法。this和super不能同时使用因为它们都是用来引用对象的关键字。 相同点 都是 Java 的关键字都只能在非静态方法中使用在构造方法中使用时都只能在第一行且不能同时存在 不同点 this是当前对象的引用而super关键字用于引用父类对象在非静态成员方法中this用来访问本类的方法和属性super用来访问父类继承下来的方法和属性在构造方法中this(...)用于调用本类构造方法super(...)用于调用父类构造方法两种调用不能同时在构造 方法中出现构造方法中一定会存在super(...)的调用用户没有写编译器也会增加但是this(...)用户不写则没有 ⑦ 继承方式
Java中不支持多继承就像一个儿子不能有两个爹~
但Java虽然不支持多继承但就不代表它不能多个继承了为了弥补这个缺陷Java支持了多层继承 而Java同样也支持单继承和不同类继承同一类而这两种情况在之前我们多次举学生类的例子时就都接触过了这里也就不浪费大家的时间啦
⑧ final 关键字
final 是一个关键字用于修饰类、方法和变量具有不同的作用和效果。 final 修饰变量 当使用 final 修饰一个变量时该变量被称为常量它的值不能被改变 对于基本类型的变量一旦被赋值后就不能再被修改。 对于引用类型的变量一旦被赋值后不能再指向其他对象但对象本身是可以被修改的 输出结果 final 修饰成员方法 当使用 final 修饰一个方法时该方法不能被子类覆盖即不能被重写 使得某个方法的实现是不可改变的提高了安全性和稳定性。 final 修饰类 当使用 final 修饰一个类时该类不能被继承即不能有子类 那么这篇关于(继承与多态-上篇)的知识就暂时为大家分享到这里啦作者能力有限如果有哪里说的不够清楚或者不够简洁还请大家在评论区多多指出那么我们下期再见啦~