Java继承的问题引导和测试代码
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() );
}
}
测试结果:

小结:
super.getName() + "校长"; 这样便能访问父类私有的 name 属性 。所以在子类中可以通过 super.父类公共接口 的形式,访问父类的私有成员。
3. 只支持单一继承,不支持多重继承,但支持多层继承
解释:除了Object 没有父类,每个类有且仅有一个直接父类,如果没有明确指出父类,Object 被认为是这个类的父类。
也许有同学就会问了,既然 Object 是所有类的父类,那么为什么还可以继承其他类呢?
正如解释里所说:“没有明确指出父类,Object 被认为是这个类的父类。”
没有明确指出父类
public class Person {}
public class Teacher {}
继承关系是这样的:

继承后
public class Teacher extends Person{}
继承关系如下:

也许有同学又会问:既然不能多重继承了,那我要同时继承多个类的功能该怎么办呢?解决办法如下:
// 第一种方式(✖️)
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 {}
效果显示:

2. final 修饰的方法不能被覆盖
3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。
修改 final 局部变量 的取值
public class Test {
public static void main(String... args) {
final int temp;
temp = 1;
temp = 2;
}
}
报错提示:

final成员变量未显式初始化
public class Person {
private final String name;
}
报错提示:

4. 常量定义的标准格式
public static final 数据类型 常量名=赋值
常量名:大写字符,如果有多个,用下划线连接
private 修饰的类成员只能在类的内部访问,这是由面向对象的封装性决定的
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
JavaWeb中Tomcat底层机制和Servlet运行原理详解
这篇文章主要介绍了JavaWeb中Tomcat底层机制和Servlet运行原理详解,Tomcat是一个开源的Java Web服务器,它是基于Java Servlet和JavaServer Pages(JSP)技术的,下面是关于Tomcat底层机制和Servlet运行原理的简要说明,需要的朋友可以参考下2023-10-10
Spring Boot深入学习数据访问之Spring Data JPA与Hibernate的应用
Spring Data JPA是Spring Data的子项目,在使用Spring Data JPA之前,先了解一下Hibernate,因为Spring Data JPA是由Hibernate默认实现的2022-10-10
springMVC的RequestMapping请求不到路径的解决
这篇文章主要介绍了springMVC的RequestMapping请求不到路径的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
Java中转义字符反斜杠\的代替方法及repalceAll内涵解析
这篇文章主要介绍了Java中转义字符反斜杠\的代替方法及repalceAll内涵解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08
Java TimeoutException:服务调用超时异常的正确解决方案
在现代软件开发中,服务间通信是构建分布式系统的基础,然而,网络延迟、服务负载、资源竞争等因素都可能导致服务调用超时,TimeoutException是Java中表示服务调用超时的常见异常之一,本文将探讨TimeoutException的成因及解决方案,需要的朋友可以参考下2024-12-12


最新评论