( 补充)166 167 抽象类和抽象方法格式,使用及其注意事项

( 补充)166 167 抽象类和抽象方法格式以及使用

  • 抽象方法-就是加上abstract关键字,然后去掉大括号,直接分号结束
    *抽象类,抽象方法所在的类,必须是抽象类才行,在class之前写上abstract 即可
  • 如何使用抽象类和抽象方法
    *1.不能直接创建New抽象对象
    *2.必须要用一个子类继承抽象父类
    *3.这个子类必须覆盖重写父类当中的所有的抽象方法
  • 覆盖重写(实现),子类去掉抽象方法的abstract关键字,然后补上方法体大括号
    *4.创建子类对象进行使用

注意事项
1.抽象类不能直接创建对象,如果创建,编译无法通过而报错,只能创建期非抽象子类的对象
理解-假如创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义
2.抽象类当中,可以有构造方法,是供子类创建对象是,初始化父列成员使用的
理解-子类的构造方法中,有默认的super(),需要访问父类构造方法
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
理解-未包含抽象方法的类,目的就是不想让调用者创建该类对象,通常用某些特殊的类结构设计
4.抽象类的子类,必须重写父类中的所有抽象方法,否则,编译无法通过而报错,除非该子类也是抽象类
理解-假设不重写所有抽象方法,则类中可能包含抽象方法,那么创建对象后,调用抽象的方法,没有意义

下面是通过程序将各个注意事项说明-
//*************************************************************************************
package demo13;//最高的抽象父类
public abstract class Animal {
public abstract void sleep();
public abstract void eat();
}
//*************************************************************************************
package demo13;//一级子类

//public class Dog extends Animal {如果只重写eat()这一个抽象方法,而把父类的抽象函数全部继承的话,
// 那么该本类只能也变为一个抽象函数,并成为二级父类抽象函数,通过再次创建一个次级子类,才可以直接调用该本类

//这个子类也成为了一个抽象类
//Dog本类的覆盖重写方法+Dog次一级的子类的覆盖重写方法=最高级父类的抽象方法
//撒谎个面这句话的意思是-----一级子类的覆盖重写方法和二级子类的覆盖重写方法 的全部方法相加 达到调用最高父类的全部抽象方法的目的

public abstract class Dog extends Animal {
@Override
public void eat(){
System.out.println(“吃骨头”);
}

}
//*************************************************************************************
package demo13;//二级子类①

public class Dog2Ha extends Dog {

@Override

/* public void eat(){
System.out.println(“卡茨卡茨”);

}*/
public void sleep(){
    System.out.println("呼呼呼");
}

}
//*************************************************************************************
package demo13;//二级子类②

public class DogGolden extends Dog{
@Override
public void sleep(){
System.out.println(“睡觉觉”);
}

}

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页