温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java继承的问题引导和测试方法

发布时间:2021-08-24 15:12:12 来源:亿速云 阅读:100 作者:chen 栏目:开发技术

本篇内容介绍了“Java继承的问题引导和测试方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 1.1、定义

  • 1.2、创建子类

  • 1.3、继承的基本规则

    • 1. 子类可以继承除父类构造函数以外的一切成员

    • 2. 虽然子类继承了父类的私有成员,但子类并不能直接访问,如果想要访问私有成员必须借助父类的公共接口。

    • 3. 只支持单一继承,不支持多重继承,但支持多层继承

  • 1.4、阻止继承

    • 1.4.1、final修饰符

      • 1. final 修饰的类不能被继承

      • 2. final 修饰的方法不能被覆盖

      • 3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。

      • 4. 常量定义的标准格式


1.1、定义

从现有类派生的类被称作子类,也叫派生类,扩展类,或孩子类。现有类被称作超类,也叫基类,或父类。

1.2、创建子类

public class Person {}
public class Teacher extends Person{}

1.3、继承的基本规则

1. 子类可以继承除父类构造函数以外的一切成员

为什么子类没有继承父类的构造函数 ?
父类构造函数无法预知子类新增的属性和方法,所以不能被继承

2. 虽然子类继承了父类的私有成员,但子类并不能直接访问,如果想要访问私有成员必须借助父类的公共接口。

public class Person {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
	    this.name = name;
	}
}
public class Teacher extends Person{
// 方法覆盖
	public String getName() {
// super 调用父类的功能接口
    	return super.getName() + "校长";
	}
}
public class Test {
	public static void main(String... args) {
        Teacher flameking = new Teacher();
        System.out.println( flameking.getName() );
    }
}

测试结果:

Java继承的问题引导和测试方法

小结:

super.getName() + "校长"; 这样便能访问父类私有的 name 属性 。所以在子类中可以通过super.父类公共接口 的形式,访问父类的私有成员。

3. 只支持单一继承,不支持多重继承,但支持多层继承

解释:除了Object 没有父类,每个类有且仅有一个直接父类,如果没有明确指出父类,Object 被认为是这个类的父类。

也许有同学就会问了,既然 Object 是所有类的父类,那么为什么还可以继承其他类呢?
正如解释里所说:“没有明确指出父类,Object 被认为是这个类的父类。”

没有明确指出父类

public class Person {}
public class Teacher {}

继承关系是这样的:

Java继承的问题引导和测试方法

继承后

public class Teacher extends Person{}

继承关系如下:

Java继承的问题引导和测试方法

也许有同学又会问:既然不能多重继承了,那我要同时继承多个类的功能该怎么办呢?解决办法如下:

// 第一种方式(✖️)
public class Person {}
public class Employee {}
public class Teacher extends Person,Employee {}
// 第二种方式(✔️)
public class Person {}
public class Employee extends Person {}
public class Teacher extends Employee {}

小结:

如上,既然不能多重继承,那么利用多层继承的方式便能同时继承多个类的功能。

1.4、阻止继承

当我们在创建一个新类时,现有某个类包含我们想要的代码,那么让这个新类继承它,这样我们就不用重新编写代码,就可以复用已存在的属性和方法。可是有某个同学他偏偏不想让别人利用他的代码…

那他怎么做才能让自己的代码不被别人继承呢?

1.4.1、final修饰符

1. final 修饰的类不能被继承

使用方法:

public final class Person {}

效果显示:

Java继承的问题引导和测试方法

2. final 修饰的方法不能被覆盖
3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。

修改 final 局部变量 的取值

public class Test {
	public static void main(String... args) {
    final int temp;
    temp = 1;
    temp = 2;
    }
}

报错提示:

Java继承的问题引导和测试方法

final成员变量未显式初始化

public class Person {
	private final String name;
}

报错提示:

Java继承的问题引导和测试方法

4. 常量定义的标准格式

public static final 数据类型 常量名=赋值

常量名:大写字符,如果有多个,用下划线连接

private 修饰的类成员只能在类的内部访问,这是由面向对象的封装性决定的

“Java继承的问题引导和测试方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI