文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java超详细讲解三大特性之一的继承

2024-04-02 19:55

关注

继承的概念

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。

继承性的好处:

✅继承性的格式:class A extends B{}

A:子类,派生类,subclass,B: 父类 ,超类, 基类,superclass

体现:一旦子类A继承父类B之后,子类A中就获取了父类B中声明的所有的属性和方法,特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构,只有因为封装性的影响,使得子类不能直接调用父类的结构而已

子类继承父类以后,还可以声明自己特有的特有的属性或方法:实现功能的拓展。而一个父类是可以有多个子类的,java中类的单继承性:一个类只能有一个父类,子父类是相对的概念,子类直接继承的父类,称为:直接父类,间接继承的父类称为:间接父类,子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法

如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.Object类,Object类是所有java类的根父类

继承中需要注意的点:

1.子类不能选择性继承父类;

2.Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;

3.构造方法不会被子类继承,但可以从子类中调用父类的构造方法。

例如

class teacher{             //声明一个teacher类为父类
	String name;      	   //定义父类的成员变量name、age   
	int age;
	void show(){           //定义父类成员方法,将成员变量输出
		System.out.println(name); 	  
		System.out.println(age); 
	}
}
class Student extends teacher {     //声明一个Student类为子类并继承父类
}
public class myfirst {
	public static void main(String[] args) {
	System.out.println("学生");
	Student student=new Student();     //声明一个Student类的实例对象student
	student.name="Tom";                //子类调用父类的成员变量name并赋值
	student.age=19;                    //子类调用父类的成员变量age并赋值
	student.show();                    //子类调用父类的成员方法show
	}
}

方法的重写

在实际应用当中,我们所写的子父类的功能是不一样的,这时我们就需要重写或隐藏父类的该方法。

1重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作

2应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法

3重写的规定:

方法的声明:

权限修饰符 返回值类型 方法名(形参列表)

子类中的叫重写的方法,父类中的叫被重写的方法,子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同,子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 特殊情况:子类不能重写父类中声明为private权限的方法

关于返回值类型:

父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void,父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类

父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的

子类和父类中的同名参数的方法都必须声明为非static的才为重写,为static的不是重写

例如

class A{
	public void sayHello() {                      //输出英文欢迎
		System.out.println("Hello,Welcome to Java!!!");
	}
	public void sayBye() {
		System.out.println("GoodBye,everyone");
	}
}
class B extends A {           
    public void sayHello() {                      //输出中文欢迎  
    	System.out.println("大家好,欢迎学习Java!!!");
    }
}
public class myfirst {
	public static void main(String[] args) {
	B b=new B();                                //创建子类B的一个实例对象,使用默认构造方法
	b.sayHello();                               //调用子类中重写的方法
	b.sayBye();                                 //调用父类中的方法
	}
}

super关键字的使用

super理解为:父类的,super可以用来调用、属性、方法、构造器

super的使用,我们可以在子类的方法或构造器中。通过使用“super.属性”或“super.方法”的方式,显式的调用父类中声明的属性或方法,但是,通常情况下,我们习惯省略“super.

特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的使用”super.属性“的方式,表明调用的是父类中声明的属性。当子类重写了父类中的方法之后,我们想在子类中的方法中调用父类中被重写的方法时,则必须显式的使用“super.方法”的方式,表明调用的是父类中被重写的方法。

super调用构造器

我们可以在子类的构造器中显式的使用“super(形参列表)”的方式,调用父类中声明的指定的构造器,"super(形参列表)"的使用,必须声明在子类构造器的首行,我们在类的构造器中,针对于”this(形参列表)"或super(形参列表)“只能二选一,不能同时出现,在构造器的首行,没有显式的声明”this(形参列表)“或”super(形参列表)“,调用父类中的构造器

例如

package first;
class A{
    public String name="张飞";         //添加成员变量
	public void say() {                //添加成员方法say
		System.out.println("我是父类A成员方法say");
	}
}
class B extends A{
    public String name="关羽";         //与父类中同名的字段,隐藏父类
	public void say(){                 //重写方法say
		super.say();                   //使用super关键字调用父类中的方法
		System.out.println("我是子类B成员方法say");
        System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量
	}
}
public class myfirst {
	public static void main(String[] args) {
	  B b=new B();                     //创建子类的一个实例对象
	  b.say();                         //调用子类中重写的方法
	  System.out.println("子类的name名字:"+b.name);   //调用子类中的name
	}
}

总结

今天学习了java中继承的特性,方法的重写,以及super关键字的使用。 

到此这篇关于Java超详细讲解三大特性之一的继承的文章就介绍到这了,更多相关Java继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯