java基础知识继承

java基础知识继承继承时类和类之间的关系 是一个很简单很直观的概念 与显示生活中的继承 例如儿子继承了父亲财产 类似 继承可以理解为一个类从另一个类中获取方法和属性的过程 如果类 B 继承于类 A 那么类 B 就拥有类 A 的属性和方法 继承使用 extends 关键字 例如我们定义了一个 People public class People public String name 姓名 public

大家好,我是讯享网,很高兴认识大家。



继承时类和类之间的关系,是一个很简单很直观的概念,与显示生活中的继承(例如儿子继承了父亲财产)类似。

继承可以理解为一个类从另一个类中获取方法和属性的过程。如果类B继承于类A,那么类B就拥有类A的属性和方法。

继承使用extends关键字。

例如我们定义了一个People:

public class People { public String name;//姓名 public String age;//年龄 public String sex;//属性 public void say(){ System.out.println("我的名字为"+this.name+",年龄为"+this.age+",性别为"+ java基础知识继承this.sex); } }
讯享网

如果现在还需要定义两个类,一个是Teacher类,而这个类需要有基本的name,age,sex属性,还需要增加school,subject,seniority属性。怎么办呢?我们要重新定义一个类吗?

完全没必要,可以先继承People类,然后在增加自己的属性即可。例如:

讯享网public class Teacher extends People{ public String school;//教师所在的学校 public String subject;//学科 public int seniority;//教龄 public void say(){ System.out.println("我的名字为"+this.name+",在"+school+"教"+this.subject+",有"+seniority+"年教龄!"); } public void lecturing() { System.out.println("我已经" + age + "岁了,还在教育岗位!"); } }

其中

  • name和age变量虽然没有在Teacher中定义,但是已经在People中定义,而Teacher继承了People类,这样People中的属性和方法可以直接拿过来用。
  • 而Teacher类继承了People类,称Teacher是People类的子类,People是Teacher的父类。
  • 子类可以覆盖父类中的方法。
  • 子类可以覆盖父类除private修饰的以外的所有成员。


构造方法不能被继承。
继承是在维护和可靠性的一个伟大进步,如果在People中进行修改,那么Teacher类就会自动修改,而不需要手动去修改。

单继承性:Java允许一个类仅能继承一个其他类,即一个类只能有一个父类,这个限制被称为单继承性,而接口允许多继承,弥补了Java类只能单继承的缺陷。
如果一个类没有显式的继承一个父类,那么这个类的默认父类就是Object类,Object类是所有类的父类。

在上面的基础上,实现一个教师:

public class PeopleDemo { public static void main(String[] args) { Teacher teacher = new Teacher(); teacher.name = "小布"; teacher.age = "70"; teacher.school = "清华大学"; teacher.subject = "JAVA"; teacher.seniority = 12; teacher.say(); teacher.lecturing(); } }

运行结果:

在 Java 编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面的模块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下述行为按顺序发生:

  1. 存储空间被分配并初始化到 0 值
  2. 进行显式初始化
  3. 调用构造方法
  4. 层次中的每个类都会发生最后两个步骤,是从最上层开始。

Java 技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须初始化。因此,Java 编程语言总是在执行子构造方法前调用父类构造方法的版本。有继承的类在运行的时候,一定要记得:初始化子类必先初始化父类,这是Java 程序的一个基本运行过程。比如:

讯享网public class Test extends Parent { private String name; private int age; public Test() { name="Tom"; age=20; } public static void main(String[] args) { Test t = new Test(); System.out.println(t.name + "的年龄是" + t.age); } }
public class Parent { private int num = 1; public Parent() { System.out.println("现在初始化父类"); } public void test() { System.out.println("这是父类的test方法"); } }

运行结果:

上述类的基本运行顺序是:

  1. 先运行到第 8 行,这是程序的入口。
  2. 然后运行到第 9 行,这里要 new 一个 Test,就要调用 Test 的构造方法。
  3. 就运行到第 4 行,注意:初始化子类必先初始化父类。
  4. 要先初始化父类,所以运行到第 15 行。
  5. 然后是第 14 行,初始化一个类,必须先初始化它的属性。
  6. 然后是第 16 行。
  7. 然后是第 17 行,表示父类初始化完成。
  8. 然后是回到子类,开始初始化属性,因此运行到第 2 行,然后是第 3 行。
  9. 子类属性初始化完过后,才回到子类的构造方法,执行里面的代码,也就是第 5、6 行。
  10. 然后是第7 行,表示 new 一个 Test 实例完成。
  11. 然后回到 main 方法中执行第 10 行。
  12. 然后是第 11 行。

参考资料来源:网络。

小讯
上一篇 2024-12-27 13:21
下一篇 2024-12-29 18:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2761.html