2019年10月22日 日报
java
今日内容: 1.继承 2.访问控制 3.final关键字 4.多态
1.继承
基本概念:
当多个类之间有相同的特征或行为时,可以将相同的内容提取出来组成一个公共类,让多个类吸收公共类中已有的特征和行为而在多个类的内部编写自己独有特征和行为的方式我们就叫做继承,使用继承可以减少代码的重复性和扩展性和可维护性.
使用方法:
在java语言中使用extends(扩展)关键字来表达继承关系
如:
public class student extends person{} 表示student类继承自person类
其中person类叫做基类,父类,超类
其中student类叫做派生类,子类,孩子类
注意事项:
1.子类可以继承父类的成员变量和成员方法,其中私有成员变量可以继承但是不可以直接使用,子类不可以继承父类的构造方法和私有方法.
2.无论使用何种方式调用子类构造方式时,都会自动调用父类的无参构造方法来初始化从父类中继承下来的成员变量,相当于在子类构造方法的第一行增加代码:super()的效果(,必须出现在构造方法的第一行,表示调用父类的无参构造,括号中没有参数就代表无参构造,this()和super()都要出现在构造的第一行,所以不能同时出现)
3.使用继承必须满足子类is a父类的逻辑,也就是不能滥用继承
4.java语言中只支持单继承,不支持多继承,一个子类只能有一个父类,但是一个父类可以有多个子类
方法重写(Override):
基本概念:
当父类中继承下来的方法满足不了子类中的需求时,就需要在子类中重写一个新的与父类中一样的方法进行覆盖从父类中继承的版本,这个方法就叫做重写.
重写原则:(笔试题)
1,方法名相同,参数列表相同,返回值类型要相同或从jdk1.5开始可以返回子类类型
2.访问的权限不能变小,只能变大或者相同(如果父类的方法是public的权限那么子类的权限也至少是public或比public更高)
3.要求不能抛出更大的异常(异常机制课时候会讲)
4.如果父类使用的时候static的方法那么子类中也要是static的方法
例子:
@Override
void show(){
super.show();//是在调用父类的show方法
System.out.println("我的工资是"+getxinshui());
}
访问控制
常用的访问控制符(笔试题)
访问控制符 访问权限 本类内部 本包中的类(同一个目录下的其他类) 子类 其他包中的其他类
public 公有的(在任意位置都能使用) ok ok ok ok
protected 保护的 ok ok ok no
啥也不写 默认 ok ok no no
private 私有的 ok no no no
要求掌握:
1.public修饰可以在任意位置使用,
2.private修饰只能在本类中使用.
3.通常情况下成员变量都使用private而成员方法都使用public修饰
package语句的由来
定义类名时将类名作为唯一标记与其他人合并项目的时候可能会重名,发生冲突,用包(package)的概念来解决命名冲突的问题
定义语法:
package 包名;
package 包名1.包名1下级1 可以创建多层包
final关键字:(重点)
基本概念:
final本意为"最终的 不可更改的",该关键字可以修饰类,成员方法,还可以修饰成员变量等.
final修饰成员方表示该方法不能被重写但是可以重写但是可以被继承.
final修饰成员变量表示该成员变量必须初始化而且不能更改.
使用方式:
final关键字修饰类,表示该类不能被继承.
防止滥用继承
final关键字修饰成员方法,表示该方法不能被重写
防止不经意间发生的方法重写
final关键字修饰成员变量,表示该变量值必须初始化并不能修改
防止不经意间造成数值的更改
语法:
public final class 类名
扩展:
常量:
在以后开发中很少单独使用static关键字或final关键字修饰成员变量,通常都是使用public static final共同修饰成员变量,来表示常量的含义,也就是谁也不能修改的量
命名规则:要求所有字母大写,不同单词之间采用_连接