Java进阶学习笔记6——继承的介绍

server/2024/9/24 0:20:48/

继承的学习目标:

认识继承;

继承的好处、应用场景

什么是继承?

Java中提供了一个关键字extends,用这个关键字,可以让一个类和另外一个类建立父子关系。

继承的特点:

子类能继承父类的非私有成员(成员变量、成员方法)。

父类的私有成员,子类是不能继承的。而父类的非私有成员,子类是不能继承的。

私有:private

继承后对象的创建:

子类的对象是由子类和父类共同完成的。

A父类:

java">package cn.ensource.d7_extends;// 父类
public class A {public int i;public void print1() {System.out.println("===print1====");}private int j;private void print2() {System.out.println("===print2====");}
}

 B子类:

java">package cn.ensource.d7_extends;// 子类
public class B extends A {private int k;// 子类可以继承父类的非私有成员方法public void print3() {// 1. 访问父类的非私有变量System.out.println(i);print1();//        System.out.println(j);
//        print2()}}

测试类:

java">package cn.ensource.d7_extends;public class Test {public static void main(String[] args) {B b = new B();System.out.println(b.i);
//        System.out.println(b.j);// k 变量是私有的,所以不能被访问
//        System.out.println(b.k);b.print1();
//        b.print2();b.print3();  // print3是公开出去的}
}

继承的执行原理:

私有的变量是不能直接访问的,只能通过getter/setter方法进行访问。

k是私有变量,只能自己访问,k通过B的方法去访问并对外开放。

子类对象实际上是由子父类两张设计图共同创建出来的。

待继承关系的类,java会用类和其父类,这多张设计图来一起创建类和对象。

子类能够访问什么成员,是由子父类这多张设计图共同决定的,这多张设计图对外暴露了什么成员,对象就可以访问什么成员。

 继承的好处:

减少重复代码的编写。

 

感觉Teacher类是不完整的,里面没有name变量,但是创建的对象是由Teacher类和People类共同完成的。虽然name变量是私有的,但是我们可以通过getter、setter 方法来处理。

但是,主要的是我们把重复的代码提取出去了,把重复的代码合并到父类中。这个思维方式很关键。我们在写代码的时候,看到有重复的代码,我们也许一上来不会想到继承的思路,可以通过这种方式来解决的。这个就是继承的好处。

java">package cn.ensource.d8_extends_application;public class People {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

java">package cn.ensource.d8_extends_application;public class Teacher extends People{private String skill;public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}public void printInfo() {System.out.println(getName() + "具体的技能:" + skill);}
}
java">package cn.ensource.d8_extends_application;public class Test {public static void main(String[] args) {// 目标:掌握继承的好处Teacher t = new Teacher();t.setName("播仔");t.setSkill("Java、Spring");System.out.println(t.getName());System.out.println(t.getSkill());t.printInfo();}
}

运行结果:


http://www.ppmy.cn/server/42892.html

相关文章

云原生|为什么服务网格能够轻松重塑微服务?一文讲清楚!

目录 一、概述 二、 设计 三、服务网格 四、总结 一、概述 容器化技术与容器编排推动了微服务架构应用的演进,于是应用的扩展与微服务的数量日益增加,新的问题随之而来,监控服务的性能变得越来越困难,微服务与微服务之间相互通…

docker迁移根目录导致的权限问题

项目场景: 起因是docker默认安装的根目录,空间不太够了,需要迁移 问题描述 按照迁移的步骤,将文件 cp -rf到新路径之后修改data-root路径,然后重启docker,看起来一切正常。 原因分析: 观察一…

Softing工业推出新品edgeGate:一款用于工业边缘和云应用的硬件网关

2024年4月17日(哈尔),Softing工业自动化在2024年汉诺威工业博览会上首次展示了新品edgeGate。该产品是一个无需维护的硬件物联网网关解决方案,可将生产数据从PLC和数控机床控制器传输至工业边缘及物联网云平台。 (edge…

python装饰器

前言 修饰器是 Python 语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。 装饰器的作用 在不改变原有函数的源代码的情况下,给原有函数增加新的功能。 装饰器的功能特点 不修改原有函数的源代码…

开发需要知道的敏捷开发理念

敏捷宣言和原则 敏捷软件开发宣言 敏捷软件开发宣言(Agile Manifesto)是敏捷开发方法的核心指导原则,由17位软件开发专家在2001年共同起草。该宣言强调了在软件开发过程中对某些价值观的优先级: 个体和互动高于流程和工具&#…

前端开发技巧 --判断文本是否溢出

const isTextOverflower()>{if(element){return element.offsetWidth > element.scrollWidth}return false}实现javascript 判断文本是否溢出

WAF绕过(下)

过流量检测 这里的流量检测就是在网络层的waf拦截到我们向webshell传输的数据包,以及webshell返回的数据 包,检测其中是否包含敏感信息的一种检测方式。如果是大马的情况下,可以在大马中添加多处判断代码,因此在执行大马提供的功…

微信小程序多端应用Donut Android生成签名

一、生成签名的作用 确保应用的完整性:签名可以确保应用在发布后没有被修改。如果应用被修改,签名就会改变,Android系统就会拒绝安装。确定应用的唯一身份:签名是应用的唯一标识,Android系统通过签名来区分不同的应用…