java日常学习:instanceof、final和抽象类

来源:互联网 发布:linux 建立多级目录 编辑:程序博客网 时间:2024/04/28 08:57

java代码块


instanceof关键字

instanceof关键字: 判断一个对象是否属于指定的类型。

instanceof关键字的使用前提: 判断的对象与指定的类型必须存在继承的关系,或者是实现的关系。

instanceof关键字的使用格式:

对象  instanceof 类名

instanceof关键字的作用: 学习完多态之后才有作用。做类型转换 之前先判断,否则容易报错。


final关键字

final(最终)

final关键字要注意的细节 :
1. final关键字修饰一个基本类型变量时, 该变量不能重新赋值。
2. final关键字修饰一个引用类型变量时,其引用重新指向新的对象。
3. final修饰一个方法时,该方法不能被重写。
4. final修饰一个类的时候,该类不能被继承。

常量的修饰符: public static final.

常量命名规范: 所有字母大写,单词与单词之间使用下划线分隔 。


抽象类

abstract(抽象)
抽象类的应用场景:
描述一类事物的时候,发现该事物确实存在着某种行为,但是目前该行为是不具体的,
那么这时候我们应该抽取该方法的声明,不去实现该方法,这时候我们应该使用抽象类。

抽象类要注意的细节:
1. 如果一个方法没有方法体,那么该方法必须使用abstract修饰。
2. 如果一个类有抽象的方法,那么该类也必须使用abstract修饰。
3. 非抽象类继承抽象类的时候,必须要把抽象类中的所有抽象方法全部实现。
4. 抽象类可以定义抽象方法以及非抽象方法。
5. 抽象类是可以不存在抽象方法的。
6. 抽象类不能创建对象。
疑问: 为什么抽象类不能创建对象呢?
因为抽象类一旦创建了对象就可以使用对象去调用方法了,一旦调用了抽象方法就没有任何的意义了。
7. 抽象类是存在构造方法的。
疑问:既然抽象类不能创建对象,那么存在构造方法的意义在那?
抽象类的构造方法是留给子类调用初始化从父类继续下去的成员变量的。

abstract不能与以下关键字配合使用:
1. abstract 不能与private配合使用。
2. abstract 不能与final关键字配合使用。
3. abstract 不能与static关键字配合使用。


练习

/*需求: 描述图形、矩形、 圆形三个类,首先要把三者之间的关系描述清楚,所有的图形都有计算面积以及周长的方法,但是每种图形的计算面积与周长方式并不一致。*///图形类;abstract class MyShape{    public abstract void getArea();    public abstract void getLength();}//矩形属于图形中一种;  class Rect extends MyShape{    int height;    int width;    public Rect(int height,int width){        this.height = height;        this.width = width;    }    public void getArea(){        System.out.println("矩形的面积是:"+height*width);     }    public void getLength(){        System.out.println("矩形的周长是:"+2*(height+width));    }}//圆形也是属于图形中一种;class Circle{    public static final double PI = 3.14;    double r;    public Circle (double r){        this.r = r;    }    public void getArea(){        System.out.println("圆形的面积是:"+PI*r*r);    }    public void getLength(){        System.out.println("圆形的周长是:"+2*PI*r);    }}class demo1{    public static void main(String[] args)     {        Rect r = new Rect(3,4);        r.getArea();        r.getLength();        Circle c = new Circle(3.0);        c.getArea();        c.getLength();    }}

用于平时自己复习回顾,如有错误,欢迎指正

原创粉丝点击