Java基础之继承方面的学习(二)

版权声明:学习之路,任重道远 https://blog.csdn.net/weixin_43359405/article/details/82981420

继承:一个子类继承父类的属性以及方法过程。

Top 一:为什么要使用到继承或者使用继承有什么好处呢?

      主要有Java的性质有关,java是面向对象的一门编程性语言,类是必不可少的部分,当我们编写完一个类又我们想进一步的拓展时候,这个时候我们就需要使用到了继承的思想。使用一个子类继承父类的方法,重写并调用父类的方法(除私有的以外,通俗来讲就是private修饰方法以及私有域以外的)。在子类中也可以调父类的方法、重写父类的方法、隐藏父类同名域等等实现子类需要的功能,继承的优点是提高了代码的效率,避免了代码重写。

                                                          ---------------------------------------------以上解析采自百度百科+自我理解

Top二:如何判断两个类二者之间是否存在继承关系或者谁继承了谁?

在此使用一个关键字instanceof关键字,结果存在三个 异常、true、false。

true&false:存在继承关系,也可以一次判断是否存在谁继承谁(格式:A instanceof B)

异常:二者之间不存在继承关系

 

Top 三:如何去继承呢?

在此使用到一个关键字 extends 关键字。格式 public class A extends B

 

Top四:继承之后如何调用父类的方法呢?

在此适用到一个关键字 super,我们可以通过 super.父类方法、super.父类属性、super(参数),依次在子类中调用父类的方法,属性以及构造方法。

 

Top五:继承是一个什么样的过程呢?

重点来了:继承调用是怎么样的过程?

关于new操作的时候的过程:

先给一个定义吧:当一个子类继承一个父类的时候,外界创建一个子类的时候,会先调用父类的无参构造方法方法(当没有时会报错),之后再调用子类的构造方法。如果子类构造方法中使用了super语句,则会调用父类的某构造方法,不会调用无参构造方法。

以代码为例进行简介:

   无super语句代码:

package com.briup.ch14;

public class person{
	 private int sex;
	 private String name;
	 private int id;
     
	 public person(String name,int id,int sex){
		 System.out.println("我是父类的构造方法 name+id+sex");
	     this.sex = sex;
		 this.name = name;
		 this.id = id;
	 }
	 public person(){
	     System.out.println("我是父类的无参构造方法");
	 }
}
package com.briup.ch14;

public class student extends person{

	private int answer;

	public student(String name , int id , int sex , int answer){
		System.out.println("我是子类的构造方法 name+id+sex+answer");
		this.answer = answer;
	}

	public student(String name , int id , int sex ){
	    System.out.println("我是子类的构造方法 name+id+sex");
	}
	
}
package com.briup.ch14;

public class test{
	 public static void main(String ... args){
	     student s = new student("张三",1001,1,10);
	 }
}

结果截图:

添加super的student类:

package com.briup.ch14;

public class student extends person{

	private int answer;

	public student(String name , int id , int sex , int answer){
		super(name,id,sex);
        System.out.println("我是子类的构造方法 name+id+sex+answer");
		this.answer = answer;
	}

	public student(String name , int id , int sex ){
	    System.out.println("我是子类的构造方法 name+id+sex");
	}
	
}

运行结果截图:

在此提一点super调用父类构造方法的时候,或者this调用构造方法的时候都需要放在第一行。

报错截图:

----------------------关于继承之后的父类与子类同名方法的覆盖以及隐藏方面的过程见下一篇博文。-------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_43359405/article/details/82981420