JAVA学习笔记21.11.16(参考黑马程序员B站视频)
2021/11/17 1:10:01
本文主要是介绍JAVA学习笔记21.11.16(参考黑马程序员B站视频),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
继承
一、概述
继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。
继承的格式:public class 子类名 extends 父类名{}
范例:public class Zi extends Fu{}
说明:Fu是父类,也称为基类、超类;Zi是子类,也称为派生类。
继承中子类的特点:子类既可以有父类的内容也可以有自己特有的内容。
二、继承的好处和弊端
继承的好处:
1.提高代码的复用性(多个类相同的成员可以放到一个类中)
2.提高代码的维护性(如果方法需要修改只要修改一处即可)
继承的弊端:让类与类之间产生了关系,类的耦合性增强了,当父类变化时子类的实现不得不跟着改变,削弱了子类的独立性。
什么时候使用继承?
继承体现的关系:is a
假设法:两个类A和B,若满足A是B的一种或者B是A的一种,就说明存在继承关系,可以使用继承,否则不能使用继承。
范例:苹果和水果(√),猫和动物(√),猫和狗(×)
三、继承中变量的访问特点
通过子类对象访问一个变量,首先在子类局部范围中找,然后在子类成员变量中找,最后在父类的成员变量中找,若找不到就报错,不考虑父亲的父亲。
四、super和this
this:代表本类对象的引用
super:代表父类存储空间的标识(可以理解为父类对象的引用 )
五、构造方法的访问特点
子类中所有构造方法默认都会访问父类中的无参构造方法,因为子类会继承父类中的数据,可能还会使用到父类中的数据,所以子类初始化之前,一定要先完成父类数据的初始化,而且每个子类构造方法的第一句都是:super()。
若父类中没有无参构造方法,只有带参构造方法,那么要么通过super关键字显示的调用父类的带参构造方法,要么手动给出无参构造方法(推荐自己给出无参构造方法)。
六、成员方法的访问特点
通过子类对象访问一个方法,首先在子类成员部范围中找,然后在在父类的成员范围中找,若找不到就报错,不考虑父亲的父亲。
七、方法重写
1.概述:子类中出现了和父类中一模一样的方法声明。
2.应用:当子类需要父类的功能,而功能主体有自己特有内容时,可以重写父类中的方法,这样,既沿袭了父类的功能,又定义了子类特有的内容。
注意:@override是一个注解,可以帮助我们检验重写方法的正确性。
3.注意事项:私有方法不能被重写(父类的私有成员子类不能继承);子类方法访问权限不能更低(public>默认>private)。
八、继承的注意事项
Java中类中支持单继承,不支持多继承,但是可以多层继承。子类中使用父类的带参构造方法时,需要手动调用父类的带参构造,并且在写了带参构造方法后需要手动给出无参构造方法。
修饰符
一、包
1.包的概述和作用
包其实就是文件夹,为了方便对类进行管理。
包的定义格式:package 包名;(多级包用,分开)
范例:package com.iheima;
带包的java类的编译和执行:
1)手动建包:a.按以前的方式编译java文件
b.手动建包,在对应位置建立com文件夹然后在com下建itheima文件夹
c.把.class文件放到itheima文件夹下
d.带包执行:java com.itheima.HelloWorld
2)自动建包:javac -d . HelloWorld.java(d后面有个空格,“.”后面也有个空格)
2.导包
使用不同包下的类时要写类的全路径,为简化操作,可以使用导包操作。
导包格式:import 包名;
范例:import cn.itcast.Teacher;
二、修饰符
修饰符分为权限修饰符和状态修饰符。
1.权限修饰符
2.状态修饰符(final,static)
1)final:最终的意思,可以修饰成员方法、成员变量、类,final修饰的方法、变量和类是不可以被重写、修改和继承的;修饰基本类型变量时,数据值不能发生改变;修饰引用类型时,地址值不能发生改变,但是地址里面的内容可以改变。
2)static:静止的意思,可以修饰成员变量和成员方法。static修饰的成员变量被类的所有对象共享(这也是判断是否使用静态关键字的条件),被static修饰的成员变量可以通过类名和对象名调用,推荐使用类名。
访问特点:非静态的成员方法可以访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法;静态的成员方法可以访问静态成员变量,静态成员方法。
总结:静态成员方法只能访问静态成员。
这篇关于JAVA学习笔记21.11.16(参考黑马程序员B站视频)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-08如何在敏捷项目中实现高效测试?
- 2024-07-08用户故事一定要有 “So that...” 吗?
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt