这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战
今天继续~
继承
- 继承就是子类可以继承父类,获得父类的实例域和方法
类的继承格式
class 父类 {
}
class 子类 extends 父类 {
}
继承的作用
- 减少代码的重复和冗余性,可能两个类中会有完全相同的方法,如果把这个方法写在一个父类中让两个子类去调用这个方法,就可以减少代码冗余
继承的特性
- 一个子类不可以继承多个父类
- 子类拥有父类中非private的属性,方法
- 代码的耦合度更高,反之代码的独立性越差
继承关键字
- extends与implements
extends关键字
- 在java中,类是单一继承,一个子类只能拥有一个父类,所以extends只能继承一个类
public class Son extends Father{ }
implements关键字
- implements关键字可以使java具有多继承的特性
public class Son implements Father1,Father2{ }
super 与 this 关键字
- super关键字会调用父类的方法
- this关键字会调用自己
class Father(){
void method(){
System.out.println("this is Father method");
}
}
class Son extend Father{
void method(){
System.out.println("this is Son method");
}
void run(){
this.method();// 调用自己的方法 - this is Son method
super.method();// 调用父类的方法 - this is Father method
}
}
final关键字
- 拥有final关键字的类不可被继承
final class 类名 {
}
构造器
- 子类是不会继承父类的构造器的,如果想要调用必须在子类的构造方法里使用super关键字
class Father{
Father(){
System.out.println("Father()");
}
}
class Son extends Father{
public Son(){
super();
}
}
java重写与重载
重写
- 重写指的就是子类将从父类继承过来的方法重构,名字和参数均不变,内部改造
class Father{
public void family(){
System.out.println("I'm dad");
}
}
class Son extends Father{
public void family(){
System.out.println("I'm Son");
}
}
- father的实例化输出为"I'm dad",son的实例化输出为"I'm Son"
方法的重写规则
- 参数相同
- 返回类型可以不相同,但是子类类型必须是父类类型的派生类
- 子类的访问权限不能比父类低
- 声明为static的方法不能被重写,但可以再次被声明
- 子类与父类在同一个包中的话,子类可以重写除了private与final的所有父类方法
- 子类与父类不在同一个包中的话,子类只能够重写父类的public与protected方法
- 构造方法不能被重写
Super 关键字的使用
- 当子类需要调用父类的被重写方法时,需要用到super关键字,用法其实与上面的super是一样的,就是说想要在子类调用父类方法的话需要用到super
重载
- 在一个类里面,方法名相同但是参数不同,通过调用该方法不同的参数来实现一名多用
public class Father{
public int test(){
System.out.println("test1");
}
public void test(int a){
System.out.println("test2");
}
}
ps:当传入一个整数类型的参数时,会输出test2
重载规则
- 必须改变参数
- 可以改变返回类型
- 可以改变修饰符
- 只能在同一个类 今天就学到这里吧,最近在学别的技术好像么得什么时间了😂,各位晚安~