课时61:继承定义限制

简介: 课时61:继承定义限制摘要:本内容讲解Java中继承的定义限制。Java不允许多重继承,只支持多层继承,且建议继承层次不超过三层。子类可以继承父类的所有非私有操作结构,但私有成员无法直接访问。示例代码展示了正确的多层继承和错误的多重继承情况。例如:```java// 错误的多重继承class C extends A, B {} // 正确的多层继承class B extends A {}class C extends B {}```通过继承,子类能扩展父类功能,但需遵循上述规则。

课时61:继承定义限制

 

摘要:本内容为继承的定义限制

 

继承要求

 

1.1、Java中不允许多重继承,只允许多层继承。


在实际生活中一个人只会有一个亲生父亲,在程序的逻辑中也是奉行此标准。而继承的主要目的是扩展已有类的功能,但多重继承可以同时继承多个类,将范围限定在同一类中。


假如已使用多层继承,此时对于C类同样可以继承拥有多个父亲的操作。但多层继承有限度,对于继承关系而言,如果自己写的代码,理论上不应超过三层。

 

class A { }
class B { }
class C extends A,B{ }//多重继承
public class JavaDemo {
     public static void main(string args[ ]) {

     }
  }
D:\mldn java>javac  JavaDemo. Java
JavaDemo.java:3:错误:需要’{‘
class C extends A,B{ }//多重继承
1 个错误
D:\mldnjava>

image.png

 

1 class A { }
2 class B extends A { }
3 class C extends B { } //多层继承
4 public class JavaDemo { 
5     public static void main(string args[ ]   {
6
7     } 
8  }

 

1 class A { }
2 class B extends A { }
3 class C extends B { } //多层继
4 class D extends C { }
5 class E extends D { }
6 class D extends C { } 
7 class D extends C { } 
8 class X extends Z { } 
9 public class JavaDemo {
10     public static void main(stringy args [ ] ) {
11
12     }
13  }

 

错误的继承:

Class A {}
Class B {}
Class C extends A,B {}//多重继承

正确的继承:

Class A {}
Class B extends A {}
Class C extends B {}//多层继承

 

1.2、在定义继承关系时,子类可以继承父类中的所有操作结构。


但私有操作属于隐式继承,而非私有操作属于显式继承。继承一旦发生,所有操作都可以被子类使用,在程序设计中不存在现实生活中“败家子”的概念,子类至少会维持父类的现有功能。

1   class Person {
2       private String name ;
3       public void setName (String name ) {
4           this.name = name ; 
5       }
6       public string getName () {
7            return this.name ;
8       }
9  }
10  class Student extends Person {
11     public student(string name) { 
12         setName(name) l;//设置name属性内容
13     }
14     public void fun ( ) {
15         // system .out .println (name) ;  //直接访问不可能,因为私有的
16        System.out.println(getNeme() ) ; //直接访问
17    }
18  }
19  public class JavaDemo  {
20       public static void main (string args [ ] {
21             Student stu =new Student (“林中强”) ;
22             syu.fun ()  ;
23        }
24    }

image.png

 

 

相关文章
|
C#
C#—Collection was modified;enumeration operation may not execute
错误 Collection was modified; enumeration operation may not execute翻译是 集合已修改;枚举操作可能无法执行。也就是说我们在遍历集合等可迭代元素时,进行了集合的修改导致的错误。本质上因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍...
921 0
|
小程序 C#
C#WinForm实现Loading等待界面
上篇博客中解决了程序加载时屏幕闪烁的问题。 但是,加载的过程变得很缓慢。 这个给用户的体验也不是很好,我这里想加一个Loading的进度条。 项目启动的时候,加载进度条,界面UI加载完毕,进度条消失。
767 0
|
传感器 监控 测试技术
Visual Studio 2022 常用快捷键,记录一下别忘记~
Visual Studio 2022 常用快捷键,记录一下别忘记~
2457 0
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
1759 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
7月前
|
网络协议 安全 算法
路由协议(静态路由、RIP、OSPF、BGP)
本文介绍了四种常见的路由协议:静态路由、RIP、OSPF 和 BGP。静态路由由管理员手动配置,简单安全但缺乏动态性;RIP 是距离矢量协议,适合小型网络,实现简单但收敛慢且易产生环路;OSPF 基于链路状态算法,适用于中大型网络,快速收敛且无环路,但配置复杂;BGP 是路径矢量协议,主要用于自治系统间路由选择,策略性强、稳定性高,但配置难度大且依赖人工干预。根据网络规模和需求,可选择合适的路由协议。
1178 9
|
Java API 网络架构
深入理解并实践响应式编程(Reactive Programming)
深入理解并实践响应式编程(Reactive Programming)
1002 83
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
缓存 前端开发 JavaScript
前端性能优化:提升网页加载速度的10个技巧
【10月更文挑战第25天】在互联网时代,网页加载速度直接影响用户体验和搜索引擎排名。本文介绍了10个提升网页加载速度的技巧,包括减少HTTP请求、启用压缩、使用CDN、延迟加载非关键资源、优化图片、减少重定向、使用浏览器缓存、优化CSS和JavaScript、异步加载JavaScript以及代码分割。通过这些方法,可以显著提高网页性能,改善用户体验。
2755 5

热门文章

最新文章