您的位置 首页 java

Java面向对象(抽象类)

static final 常量

  • 必须申明同时初始化
  • 类名点来访问、不能被改变
  • 建议:常量名所有字母都大写,多个单词用_分隔(eg STUDENT_NAME)
  • 编译器在编译时会将常量直接替换成具体的数,效率高
  • 何时用:数据永远不变,并且还经常使用
 public class StaticFinalDemo {
    public static void main(String[] args) {
        System.out.println(Aoo.num);
        // 1.加载Aoo.class到方法区
        // 2.静态变量num一并存储到方法区
        // 3.到方法区中获取num的值并输出

        System.out.println(Aoo.COUNT);
        // 编译器在编译时会将常量直接替换为具体数值,效率高

    }
}
class Aoo{
    public static int num = 502; //静态变量
    public static final int COUNT = 520;//常量
}  

抽象方法:

  • 由abstract修饰,只有方法的定义,没有具体的实现(连{}都不需要)
  • java规定,包含抽象方法的类 必须时抽象类。

抽象类:

  • 由abstract修饰
  • 包含抽象方法的类必须是抽象类
  • 抽象方法是不完整的,那么抽象类也是不完整的,所以抽象类是不能new来实例化
  • 抽象类是需要被继承的,派生类:

1.重写所有抽象方法—-变不完整为完整

2.也声明为抽象类—-一般都不这样使用,因为不能new

  • 意义:

封装共有的属性和行为—-代码复用

为所有派生类提供统一类型—-向上造型

可以包含抽象方法,为所有派生类提供统一入口(超类能点出来)

派生类的行为不同,但入口时一致的,同时相当于定义了一个标准(强制重写)

 abstract class Boo{ //有抽象方法的类必须是抽象类
    int width,height,speed;
    abstract void move();  //抽象方法
}
//抽象类不能new来实例化,只能被继承
class Coo extends Boo{
    void move(){  //要想子类可以new  必须重写继承父类的抽象类
        speed++;
    }
}
//那么抽象方法必须继承,而且还有重写,为什么要使用?
// 答 保证当向上造型的时候,超类引用可以点出来那个方法

//按照上面说,我做成普通方法不是更方便?
//答 若设计成普通方法,则派生类可以重写,可以不重写,而设计成抽象类,子类必须重写----做了一个标准,强制必须重写,这样不会遗漏子类要做的事情  

类设计规则:

讲共有的属性和行为,抽到超类中

若对象的行为都一样,设计成普通方法

若对象的行为不一样,设计成抽象方法

学习记录,参考:blog.csdn.net/jason13579

文章来源:智云一二三科技

文章标题:Java面向对象(抽象类)

文章地址:https://www.zhihuclub.com/170348.shtml

关于作者: 智云科技

热门文章

网站地图