sixday_java 继承与抽象类

1、继承

继承是多态的前提,没继承无多态

父类:基类、超类

子类:派生类

继承的格式:定义父类格式: public class 父类名称{}

子类格式:public class 子类名称 extends 父类名称{}

public class Override01 extends Override{
  @java.lang.Override//Override:注解,用来判断重写的方法是否正确
  public void method(){
      System.out.println("子类重写");
  }
}

2、继承中的覆盖重写

注意事项: 1>子类与父类方法名称与参数列表必须相同

2>子类方法的返回值类型必须小于父类的返回值类型

Object类是所有类的父类 Object>String/Integer/Boolean/Byte/Long

3>子类方法修饰符必须大于等于父类的方法修饰符

public>protected>(default)>private   default:什么都不写

public class Override {
  protected Object method(){
      return null;
  }
}
public class Override01 extends Override{
  @java.lang.Override//Override:注解,用来判断重写的方法是否正确
  public String method(){
      return null;
  }

3、子父类构造方法特点

1>子类构造方法中有一个默认隐含的"super()"调用,所以一定是先调用的父类构造,后执行的子类构造

2>子类构造可以通过super关键字来调用父类重载构造。

3>super调用必须在子类构造方法的第一个语句,不能一个子类构造调用多个super.

4、super关键字的用法总结

1>super调用父类成员变量

2>super调用父类成员方法

3>super在子类构造方法中调用父类构造方法

public class Override {
  int num=20;
  public void methodFU(){
      System.out.println("父类方法");
  }
}
public class Override01 extends Override{
  int num=10;
  public Override01(){
      super();//super在子类构造方法中调用父类构造方法
  }
  public void method(){
      //super调用父类成员变量
      System.out.println(num);//子类的num=10
      System.out.println(super.num);//父类的num=20
      //super调用成员方法
      super.methodFU();
  }
}

5、this关键字使用总结

1>使用this 调用本类的成员变量

2>使用this 调用本类的方法

3>使用this 无参构造调用有参构造

注意:this(..)必须是第一个语句而且唯一,不能和super一起使用。

int num=10;
//使用this 调用本类的成员变量
public void method(){
  System.out.println(this.num);//10
}
//使用this 调用本类的方法
public void method0(){
  this.method();//或者直接调用 method();
}
//使用this 无参构造调用有参构造
public Override01(){
  this(2);
}
public Override01(int num){
this(3,4);
}
public Override01(int num1,int num2){
//this();这样错误
}

6、this与super内存图(图是B站java课程中老师画的)

 

 

 

7、继承的三种方式

 

 

8、抽象方法与抽象类

抽象方法 格式

public abstract void 方法名();

抽象类:抽象方法所在的类,必须是抽象类

public abstract class Animal {
  //抽象方法
  public abstract void eat();
  //普通方法
  public void method(){
      System.out.println("抽象类方法");
  }
}

9、抽象类的使用

注意事项:

不能直接创建抽象类对象

必须用一个子类继承重写抽象类

必须重写(实现)所有抽象类的所有抽象方法

创建子类对象使用

抽象类不一定包含抽象方法,但抽象方法必须在抽象类中

posted @ 2021-06-25 17:41  别不开心,过得去  阅读(56)  评论(0)    收藏  举报