从零开始学java - 第十一天

132 阅读3分钟

这是我参与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

重载规则

  • 必须改变参数
  • 可以改变返回类型
  • 可以改变修饰符
  • 只能在同一个类 今天就学到这里吧,最近在学别的技术好像么得什么时间了😂,各位晚安~