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、抽象类的使用
注意事项:
不能直接创建抽象类对象
必须用一个子类继承重写抽象类
必须重写(实现)所有抽象类的所有抽象方法
创建子类对象使用
浙公网安备 33010602011771号