Java中的继承性特性
继承性是java中的第二特性之一。而继承性最为关键的地方为:代码重用性的问题,利用继承性可以从已有的类中继续派生出新的子类,也可以利用子类扩展出更多的操作功能。
继承性的实现代码为:class 子类 extends 父类{ }
有以下3点说明:
1、对于extends而言,需要不断的开展开来,但是为了理解上的方便,这些统一称之为:继承;
2、子类又称之为派生类;
3、父类又称之为超类(Super class);
以下代码为子类继承父类的属性及方法
class Person{
private String name;
private int age;
public Person() {}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
}
class Student extends Person {
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return this.school;
}
}
public class School{
public static void main(String args[]){
Student stu = new Student();
stu.setName("zhangsan");
stu.setAge(123);
stu.setSchool("大学");
System.out.println("名字" + stu.getName() + ",年龄" + stu.getAge()+ stu.getSchool());
}
}
从这中间可以得到以个结论:
子类在实际中的运用中,是将父类定义得更加具体化的一种手段。
在继承的使用中,有三大限制,这些在实际的运用及编写代码的时候需要多加注意:
一、继承不可以多重继承,但是可以多层继承。
子类与父类的使用如下:
class A{
public void fun(){
System.out.println("这就是A");
}
}
class B extends A{
public void fun(){
System.out.println("这就是B");
}
}
class C extends A{
public void fun(){
System.out.println("这就是C");
}
}
class New1{
public static void main(String args[]){
B b1 = new B();
b1.fun();
C c1 = new C();
c1.fun();
}
}
二、在子类在继承父类时,严格来说会继承中,但是在父类多有的私有操作属于中称之为隐形继承。所有的非私有操作属于显示属性。
class A {
private String msg;
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return this.msg;
}
}
class B extends A { // 继承自A类
}
public class Demo {
public static void main(String args[]) {
B b = new B();
b.setMsg("Hello"); // 设置msg属性,属性通过A类继承
System.out.println(b.getMsg()); // 通过子类对象取得msg属性
}
}
三、在子类构造前一定会默认调用父类的构造(默认使用无参构造),以保证父类的对象先实例化,子类对象后实例化。
观察实例化对象操作:
class A {
public A() { // 父类提供的无参构造方法
System.out.println("A、A类的构造方法!");
}
}
class B extends A { // B是子类继承父类A
public B() { // 定义子类的构造方法
System.out.println("B、B类的构造方法!");
}
}
public class Demo {
public static void main(String args[]) {
new B(); // 实例化子类对象
}
}
子类隐含语句:
class B extends A { // B是子类继承父类A
public B() { // 定义子类的构造方法
super() ; // 父类中有无参构造时加与不加无区别,如果编写则必须出现在首行
System.out.println("B、B类的构造方法!");
}
父类不提供无参构造方法:
class A {
public A(String title) { // 父类提供的有参构造方法
System.out.println("A、A类的构造方法,title = " + title);
}
}
class B extends A { // 定义子类B
public B(String title) { // 子类提供有参构造
super(title); // 明确调用父类构造,否则将出现编译错误
System.out.println("B、B类的构造方法!");
}
}
public class Demo {
public static void main(String args[]) {
new B("Hello"); // 实例化子类对象
}
}
方法覆写:
特产主要特征:子类可以根据父类已有的功能进行功能的扩展,但是在子类定义属性或方法时,可以出现定义的属性或方法与父类同名的情况,这样的操作成为覆写。
class A {
public void fun() { // 在父类中定义的方法
System.out.println("A类中的fun()方法。") ;
}
}
class B extends A { // 定义子类,此时没有覆写任何方法
public void fun() { // 此处为覆写
System.out.println("B类中的fun()方法。") ;
}
}
class C extends A {
public void fun() { // 此处为覆写
System.out.println("C类中的fun()方法。") ;
}
}
public class TestDemo {
public static void main(String args[]) {
B b = new B() ; // 实例化子类对象
b.fun() ; // 调用fun()方法,此时方法被覆写,所以调用被覆写过的方法
C c = new C() ; // 实例化子类对象
c.fun() ; // 调用fun()方法,此时方法被覆写所以调用被覆写过的方法
}
}
方法重载与重写的区别
区别 重载 覆写
英文单词 Overloading Override
发生 发生在一个类里面 发生在继承关系中
定义 方法名称相同、参数 方法名称相同、参数类型、个数相同、方法返回值相同
的类型及个数不同
极限 没有权限的限制 被覆写的方法不能拥有比父类更为严格的访问控制限制
区别 this super
功能 调用本类构造,本类方法,本类属性 子类调用父类构造,父类方法,父类属性
形式 先查找本类中是否存在有指定的调用结构, 不查找子类,直接调用父类操作
特殊 表示本类的当前对象 空
Java中的继承性特性的更多相关文章
- Java中的三大特性 - 超详细篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的三大特性 - 超详细篇>,希望对大家有帮助,谢谢 这一节的内容可能有点多,大家可以选择性的来看 简介 Java的三大特性:封装.继 ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- Java 中的三大特性
我们都知道 Java 中有三大特性,那就是继承 ,封装和多态 .那我今天我就来说说这几个特性 . 老样子 ,先问问自己为什么会存在这些特性 .首先说封装 ,封装就是使用权限修饰符来实现对属性的隐藏 , ...
- Java中面向对象三大特性之继承
1. 继承的概述 继承就是子类继承父类的变量和方法,下面用代码解释一下: class Student {// 定义学生类 String name; int age; void study() { Sy ...
- java中的三大特性
java的三大特性是封装.继承.多态: 继承是OOD(面向对象设计)为了更好的建模,编程的时候是OOP(面向对象编程)提高代码的复用性.这里有个注意点:一个类只有一个直接的父类,但不是只有一个父类. ...
- java中interface 的特性
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合.从本质上讲,接 ...
- Java中面向对象三大特性之——多态
多态的概述: 多态是继封装.继承之后,面向对象的第三大特性. 生活中,比如跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类和飞机,飞起来也是不一样的.可见,同一行为,通过不同 ...
- Java中的三大特性:封装、继承、多态
封装: 概念:封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,适当的封装可以让代码更容易理解与维护,也加强了代码的安全性. 原则:将属性隐藏起来,若需要访问某个属性,提供公共方法对 ...
- Java中面向对象三大特性之——继承
继承的概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 现实生活中继承:子承父业,用来描述事物之间的关系 代码中继承:就是用 ...
随机推荐
- 分享网上搜到的Oracle中对判定条件where 1=1的正解
今天在网上找到了Oracle中对判定条件where 1=1的正解,粘贴出来和大家分享下 1=1 是永恒成立的,意思无条件的,也就是说在SQL语句里有没有这个1=1都可以. 这个1=1常用于应用程序根据 ...
- CentOS7.3虚拟机双网卡配置
笔者在学习和工作中经常要用到linux,专门装一个linux主机固然可以,但是毕竟还要用到windows,解决的办法就是用vmware来搭建linux虚拟机.关于linux虚拟机上网的问题,笔者写过很 ...
- 自家服务器防止DDoS攻击的简单方法
DDoS攻击并不是新技术,该攻击方式最早可以追溯到1996年,2002年时在我国就已经开始频繁出现.在DDoS攻击发展的这十几年间,DDoS攻击也在不断变化.数据显示,最大规模的DDoS攻击峰值流量超 ...
- Java中的数值和集合
数组array和集合的区别: (1) 数值是大小固定的,同一数组只能存放一样的数据. (2) java集合可以存放不固定的一组数据 (3) 若程序事不知道究竟需要多少对象,需要在空间不足时自动扩增容量 ...
- python函数(1):初始函数
在学了前面很多python的基础类型后,我们终于可以进入下一阶段,今天我们将走进一个函数的新世界. 预习: 1.写函数,计算传入字符串中[数字].[字母].[空格] 以及 [其他]的个数 2.写函数, ...
- 关于EasyUI中DataGrid控件的一些使用方法总结
一,DataGrid 控件的工作流程 1,通过JavaScript将一个空白的div美化成一个空白的Datagrid模板 2,Datagrid模板通过制定的Url发送请求,获取数据 ...
- 【SqlServer系列】集合运算
1 概述 已发布[SqlServer系列]文章如下: [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlS ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- python列表反转
使用reverse来让列表反转特别方便, 没事自己写了几种方式 In [59]: def reverse(nums): length = len(nums) for i in range(length ...
- ASP.NET Core MVC – Caching Tag Helpers
简介 缓存可以大大提高应用程序加载时间和响应速度.我们可以使用缓存Tag Helpers缓存不会频繁更改的HTML内容. 在上一篇文章中,我们谈到了Tag Helpers,演示Tag Helpers能 ...