JAVA面向对象五

1 final : 最终的,不可改变的-------单独应用几率低

=修饰变量: 变量不能被改变

// 演示final 修饰变量

class Aoo{

final int num=5;

void show(){

//num=55;//编译错误,final 的变量不能被改变

}

}

= 修饰方法: 方法不能被重写

// 演示final修饰方法

class Boo{

final void show(){}

}

class Coo extends Boo{

// void show(){} // 编译错误 final修饰的方法不能被重写

}

= 修饰类:类不能被继承

//演示final 修饰类

final class Doo{}

// class Eoo extends Doo {} //编译错误 ,final 的类不能被继承

class Foo{}

final class Goo extends Foo{} // 不能当老爸 但是能当儿子

2 static final 常量: 应用率高

=必须声明同时初始化

=通过类名点来访问 , 不能被改变

= 建议:常量名所有字母都大写,多个单词用_(下划线分隔)

=编译器在遍译时会将常量直接替换为具体的值 效率高

=何时用: 数据永远不变 并且经常使用

public class StaticFinalDemo {
    public static void main(String[] args) {
        System.out.println(Hoo.PI); //通过类名点来访问
        //Hoo.PI = 3.1415926; //编译错误,常量不能被改变
 
        //1)加载Ioo.class到方法区中
        //2)将静态变量num一并存储到方法区中
        //3)到方法区中获取num的值并输出
        System.out.println(Ioo.num);
 
        //编译器在编译时将常量直接替换为具体的值,效率高
        //相当于System.out.println(5);
        System.out.println(Ioo.COUNT);
    }
}
 
class Ioo{
    public static int num = 5; //静态变量
    public static final int COUNT = 5; //常量
}
 
class Hoo{
    public static final double PI = 3.14159;
    //public static final int NUM; //编译错误,常量必须声明同时初始化
}

3 抽象方法:

=由abstract修饰

=只有方法的定义,没有具体的实现(连{}都没有)

4 抽象类

=由abstract修饰

=包含抽象方法的类必须是抽象类

=抽象类不能被实例化(new对象)

=抽象类是需要被继承的, 派生类:

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

  也声明为抽象类---------一般不这么做

=抽象类的意义

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

  为所有派生类提供统一的类型-------向上造型---代码复用

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

  派生类的行为不同,但入口是一致的 ,同时相当于定义了一个标准

补充重点

1 设计规则:

  = 将派生类所共有的属性和行为,抽到超类中-----抽供性

  = 派生类的行为都一样, 则设计为普通方法

  = 派生类的行为不一样,则设计抽象方法

 = ?

2 抽象方法/ 抽象类的疑问:

 = 抽象方法的存在意义是什么?

   保证当发生向上造型时,通过超类型的引用能点出来那个方法

=既然意义只在于能点出来,那为什么不设计为普通方法?

  =若设计为普通方法,则派生类可以重写也可以不重写,

   而设计为抽象方法,可以强制派生类必须重写-----做了个标准 ,强制必须重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值