Java继承

本文介绍了Java中的继承概念,展示了如何通过继承提高代码复用性和维护性。通过实例说明了如何创建父类和子类,并解释了继承的基本语法、构造器的调用规则以及继承带来的便利。同时,探讨了继承的细节问题,如私有属性的访问限制、构造器的调用流程,并指出Java的单继承特性。
摘要由CSDN通过智能技术生成

1.为什么需要继承?

看两个简单的程序

package com.Extends;

public class 继承01 {

	public static void main(String[] args) {
	}

}
 class pupil {
	public String name;
	public int age;
	private double score;
	public void setScore(double score) {
		this.score=score;
	}
	public void testing() {
		System.out.print("小学生"+name+"正在考数学");
		
	}
	public void showinfo() {
		System.out.print("小学生"+name+"年龄"+age+"成绩为"+score);
	}
}

这是一个模拟小学生考试的一个类,其中小学生有对应的名字,年龄,分数和方法。

package com.Extends;

public class 继承02 {
	public static void main(String[] args) {
		
	}

}
//模拟大学生考试
class graduate{
	public String name;
	public int age;
	private double score;
	
	public void setScore(double score) {
		this.score=score;
	}
	public void testing() {
		System.out.print("大学生"+name+"正在考数学");
		
	}
	public void showinfo() {
		System.out.print("大学生"+name+"年龄"+age+"成绩为"+score);
	}
}

         这是模拟大学生考试考试的一个类,其中也含有姓名,年龄,分数等属性和方法,可以看出这两个小学生类和大学生类的属性和方法大致上是一样的,这个时候我们就不需要再一个一个敲代码合作和复制了,我们就可以使用继承(extend)来完成相应的工作。 

2.继承的基本介绍和示意图

        继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来声明继承父类即可。画出继承的示意图如下

 3.继承的基本语法

class 子类 extends 父类 {

}

1.子类会自动拥有父类的属性和方法;

2.父类又叫超类,基类;

3.子类又叫派生类。

4.使用继承后的代码如下

创建一个父类Studen

package com.Extends.improve;

public class student {
//父类,是pupil和gradua的父类
	public static void main(String[] args) {
	
	}

}
class Student{
	//共有属性
	public String name;
	public int age;
	private double score;
	//共有方法
	public void setScore(double score) {
		this.score=score;
	}
	public void showinfo() {
		System.out.print("大学生"+name+"年龄"+age+"成绩为"+score);
	}
}

创建子类pupil和Graduate继承父类Studen

package com.Extends.improve;

public class pupil extends Student{
	//让pupil继承stduent
	public void testing() {
		System.out.print("小学生正在考数学");
		
	}
}
package com.Extends.improve;

public class Graduate extends Student{

	public void testing() {
		System.out.print("大学生"+name+"正在考数学"); 
		
	}

}

创建一个测试类并运行

package com.Extends.improve;

public class text {

	public static void main(String[] args) {
	pupil	p = new pupil();
	 		p.age=10;
	 		p.name="黎明";
	 		p.setScore(82);
	 		p.showinfo();
	 		p.testing();
	 		
	 		 System.out.print("=================");
	 		 
	 		 Graduate G= new Graduate();
	 		 G.age=22;
	 		 G.name="小王";
	 		 G.testing();
	 		 G.setScore(88);
	 		 G.showinfo();
	}

}

5.继承给编程带来的便利

  1. 代码的复用性提高了;
  2. 代码的扩展性和维护性提高了.

6. 继承的深入讨论/细节问题

1.子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问, 但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问子类必须调用父类的构造器, 完成父类的初始化 。

2.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。

3.如果希望指定去调用父类的某个构造器,则显式的调用一下 : super(参数列表)

4.super 在使用时,必须放在构造器第一行(super 只能在构造器中使用)

5.super() 和 this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器

6.java 所有类都是 Object 类的子类, Object  是所有类的基类.

7.父类构造器的调用不限于直接父类!将一直往上追溯直到 Object 类(顶级父类)

8.子类最多只能继承一个父类(指直接继承),即 java 中是单继承机制。

9.不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系 

7.JVM中继承的内存分布

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值