JAVA怎么创建被继承的类_Java入门之类的继承
入门第二步,了解并掌握继承。提到继承二字,各位必定首先想到的是继承家业,继承遗产等等,而我想到的是“哈哈哈哈哈哈哈你想笑死我好继承我的蚂蚁花呗吗”这句话,可见日常生活中继承出现频率太高了。那么Java中的继承是什么意思呢?其实和这些也并没有多大区别,可以直接从字面意思去理解。继承就是存在包含关系的两个类中,通过extends关键字,子类获得父类的所有属性与方法(也就是子承父业嘛)。
为什么要使用继承呢?
用两个实际例子来说明:
创建了两个动物类,猫和老鼠,他们的要求如下:
猫:属性(姓名 年龄)方法(吃 睡 玩)
老鼠:属性(姓名 年龄)方法(吃 睡 玩)
那么在开发这两个类的时候,就要对它们共有的属性与方法重新写一遍,在类少的时候工作量还是可以接受,但如果是十个一百个呢?再这样去写不仅工作量巨大,代码显得臃肿,而且难以维护。所以要解决这一问题,就要使用继承了。
继承可以起到两个作用:1.提高代码的重用性;
2.提高代码的扩展性;
继承格式
了解完继承的作用后就要知道怎么去使用它,继承的格式如下:
public class 类名(子类、派生类、超类) extends 类名(父类、基类){
}
在定义大学生类的时候,就可以让大学生类去继承学生类:
public class UNstudent extends Student{
}
要注意的是,Java有区别与c++,它属于单继承,也就是一个子类只能继承一个父类。
继承能得到什么?
子类能继承到父类所有的属性和方法,没错,所有的,肯定会有人问:private的属性也能继承到吗?其实private的属性也继承了,只是由于访问权限的原因不能够直接使用。在这里,就很有必要补充一下各访问修饰符的访问范围了。
访问修饰符同类中同包中不同包中不同包但是有继承关系的子类中
public ✔ ✔ ✔ ✔
protected ✔ ✔ ✘ ✔
默认的✔ ✔ ✘ ✘
private✔ ✘ ✘ ✘
访问修饰符的作用是设置属性和方法的访问权限,与是否能够被继承无关。
同时,子类还可以定义它自己特有的属性和方法,但在调用子类特有的方法时,一定要是子类类型的对象才能调用。
方法重写
子类继承父类后,可以直接调用继承到的方法,但父类所定义的方法很难做到具体内容很详细,会比较笼统,因此子类在使用该方法的时候需要根据自身情况来重新定义方法。我们把子类将从父类继承来的方法重新写方法体叫做方法重写。
条件:
1.必须要有继承关系;
2.重写方法时子类方法的访问修饰符必须要大于或者等于父类方法的访问修饰符;
3.重写方法时子类方法的返回值类型,方法名,参数都必须要和父类的一致。
如何调用重写后的方法
子类和父类都会有同一个名字的方法,确定调用的是子类的还是父类的,需要根据
new关键字后的类名来决定,如果new关键字后的类名是子类,那么调用的就是子类的方法,如果new关键字后的类名是父类的,那么调用的就是父类的方法。子类重写父类的方法后,当你实例化子类的对象后,然后用对象名去调用方法时,只能调用子类重写的方法,父类的方法是不能被调用的。
想要父类的方法和子类的方法都执行怎么实现呢?
在重写的方法中使用super关键字来调用父类中的方法,与上一节的this关键字类似,super用于调用父类的方法,this则可用于调用当前类中的方法。
方法重写与方法重载
方法重写指的是在继承关系中,子类重写父类方法,方法名、参数类型、参数个数必须相同的情况。
方法重载指的是在同一类或具有继承关系的类中,方法名字相同,但参数类型、参数个数不同的情况。
自动转型
要求:
(1) 要实现自动转型就必须要有继承关系;
(2)自动转型只能是子类的类型向父类的类型进行转型;
(3)只能是小范围的数据向大范围的数据进行转型。
格式:
自动转型一般有以下两种格式
①父类名 对象名 = new 子类构造方法(参数值,...);
② public 返回值类型 方法名(父类名 对象名){
对象名.方法名();
}
父类名 对象名A = new 子类构造方法(参数值,...);
子类名 对象名B = new 子类构造方法(参数值,...);
方法名(对象名A);
方法名(对象名B);
在窗体开发JFrame中,add(JLabel) add(JButton)等语句中就是使用的第二种格式。
需要注意的是,在使用了自动转型后,子类特有的属性和方法就不能被调用,若还想调用子类特有的属性与方法,则必须要强制转型。
JAVA怎么创建被继承的类_Java入门之类的继承相关推荐
- java如何创建一个dao类_java – 如何设计一个DAO类?
应该是什么是设计DAO类的最佳方式? 方法#1:将DAO类设计为对象. class Customer { //customer class } class CustomerDAO { public v ...
- setyear java_如何在Java中创建不可变类
如果对象在构造后无法更改,则该对象是不可变的.不可变对象不会以任何方式暴露其他对象来修改其状态; 对象的字段仅在构造函数内初始化一次,并且永远不会再次更改. 在本文中,我们将定义在Java中创建不可变 ...
- java接口文件定义类_Java入门笔记(四)类、包和接口
一.类 class public class Person{ String name; int age; Person(String name, int age){ this.name = name; ...
- java.lang中所有的类_java.lang中的数学类
Math 类 Java 中,讲 Math 类定义为 final 类,不能再派生子类. Math 类中定义的常量和方法都用 static 修饰符来修饰,因此不必创建 Math 类的实例,可以通过类名直接 ...
- java二嗨租车项目_Java入门第二季6-1租车项目代码
一共有5个类 Car类 //作为父类 package com.imooc; public class Car { public int ID; public String name; public i ...
- java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常
异常处理是java语言的重要特性之一,<Three Rules for effective Exception Handling>一文中是这么解释的:它主要帮助我们在debug的过程中解决 ...
- java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例
java 根据类名示例化类 LocalDateTime类atOffset()方法 (LocalDateTime Class atOffset() method) atOffset() method i ...
- java 根据类名示例化类_Java LocalDateTime类| ofInstant()方法与示例
java 根据类名示例化类 LocalDateTime类的Instant()方法 (LocalDateTime Class ofInstant() method) ofInstant() method ...
- java 根据类名示例化类_Java收集器类– 18个示例
java 根据类名示例化类 Java Collectors is a utility class that provides many useful implementations of the Co ...
- java创建一个不可变对象_如何在Java中创建不可变类?
java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...
最新文章
- Python 3 判断2个字典相同
- 梭子鱼推出Microsoft Office 365 邮件威胁扫描服务
- java设计模式系列:单例模式
- textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...
- java强引用软引用深刻理解_Java-强引用、软引用、弱引用、虚引用
- 毕业季,我的Linux求职之路
- poj 1789 TruckHistory 最小生成树 Kruskal、Prim
- Django之Django debug toolbar调试工具
- 思科、华为、Dell visio图下载
- 去除CAJviewer右上侧的广告栏位去除CAJviewer右上侧的广告栏位
- 小米路由r2d论坛_小米路由器R2D拆机换3T紫盘
- Excel VBA操作网页 显示滚动进度条
- java集成微信支付
- 软件测试团队口号及队名,霸气响亮的队名和口号押韵 有创意的团队口号
- cass光标大小怎么调_CAD如何调整十字光标和靶框大小
- 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1
- 使用pyaudio播放无损音乐(wav)
- mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)
- 结构结构结构结构结构结构结构结构结构
- 固态硬盘,光驱位主盘位,读取测试(回答:光驱位硬盘托架影像速度吗?)