网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

大家好,本篇文章主要讲的是java类的组成结构详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

contenteditable="true" data-cke-enter-mode="2" data-cke-saved-name="_label0" data-cke-widget-data="%7B%22url%22%3Anull%2C%22text%22%3A%22%5Cn%22%2C%22desc%22%3A%22%22%2C%22icon%22%3A%22%22%2C%22isCard%22%3Afalse%2C%22hasResquest%22%3Atrue%2C%22iconDefault%22%3A%22https%3A%2F%2Fcsdnimg.cn%2Frelease%2Fblog_editor_html%2Frelease1.9.5%2Fckeditor%2Fplugins%2FCsdnLink%2Ficons%2Ficon-default.png%3Ft%3DLA92%22%2C%22id%22%3A%22enOtIK-1639642821027%22%2C%22classes%22%3Anull%7D" data-cke-widget-editable="text" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-link-icon="https://csdnimg.cn/release/blog_editor_html/release1.9.5/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=LA92" data-link-title=" " data-widget="csdnlink" title=" " name="_label0">

成员变量

成员变量便是在类中定义的变量。
例如这样:

public class POP {
    int a = 1;
}


而成员变量又分为两种,一种是被static所修饰的类变量,他归类所有,一种是没有被static修饰的实例变量,他归对象所有。 

如下:

public class POP {
    int a = 1;
    static int b = 1;
}


正如字面上的意思,归类所有的变量b,他能在类的外部,直接通过POP.b的形式进行操作。 

如下程序:

public static void main(String[] args) {
    POP.b++;
    System.out.println(POP.b);
}


但是,在实际使用中,我们也可以通过对象.b的形式来调用他。 

如下:

public static void main(String[] args) {
    POP.b++;
    System.out.println(POP.b);
    System.out.println(new POP().b);
}


这是java很不好的一个缺陷,因为这个变量b,实际上是属于类的,虽然能用对象来调用,但不建议。 

再理解一下这个变量b只有一份,如下程序:

public static void main(String[] args) {
    POP.b++;
    System.out.println(POP.b);
    System.out.println(new POP().b++);
    System.out.println(new POP().b++);
}


你会发现,尽管我使用不同的对象去对b进行操作,但是他们的操作却共同作用在了同一个b上,这也是我为什么不建议使用对象来调用类变量。 

成员变量可以被四种权限修饰符修饰,以适应各种适用情形。

成员变量可以被final修饰,作为常量。

成员变量也可以被我上面提到的static修饰。

附上总代码:

public class POP {
    public static void main(String[] args) {
        POP.b++;
        System.out.println(POP.b);
        System.out.println(new POP().b++);
        System.out.println(new POP().b++);
    }
    int a = 1;
    static int b = 1;
}


 

方法

方法按照被static修饰分为实例方法以及类方法。

public void get(){
}
public static void did(){
}


需要注意的是,实例方法可以调用类变量,而类方法不可以调用实例变量,为什么呢? 

我们可以思考一下,类方法是为类所有的,实例方法是由对象所有的。

类存在的时候,对象不一定被创建了,如果这时候通过类方法来调用实例变量,此实例变量不存在,因此,这是不可取的。

方法可以被四种权限修饰符修饰。

方法可以被static修饰。

方法可以被final修饰,表示不能被子类重写。

方法可以被abstract修饰,表示这为一个抽象方法,而只要有一个抽象方法,那该类就是一个抽象类。

关于抽象类的内容以后再谈。

https%3A%2F%2Fcsdnimg.cn%2Frelease%2Fblog_editor_html%2Frelease1.9.5%2Fckeditor%2Fplugins%2FCsdnLink%2Ficons%2Ficon-default.png%3Ft%3DLA92%22%2C%22id%22%3A%220jy4Wa-1639642820993%22%2C%22classes%22%3Anull%7D" data-cke-widget-editable="text" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-link-icon="https://csdnimg.cn/release/blog_editor_html/release1.9.5/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=LA92" data-link-title=" " data-widget="csdnlink" title=" " name="_label2">

构造器

构造器,用于创建对象。

可以被四种权限修饰符修饰。

protected POP(){
}
POP(int a){
}


我们可以通过this.POP(形参列表)的形式,来在构造器里面调用其他构造器,注意,这种方式,必须写在方法体的最上部分,并且,如果没有写this,那么java会默认用super来调用父类的空参构造器,这也是为什么我们建议设计程序的时候 

总是留一个空参构造器。

那么,我们为什么要在一个构造器里面通过this调用另一个构造器呢?

因为这样能减少代码的重复,方便我们迭代升级。

另外注意,构造器是没有返回值的,当然你也可以说他的返回值就是他所创建的对象,不过我们不能显示的指明。

代码块

代码块分为实例代码块和类代码块。

{
    System.out.println("实例代码块");
}
static{
    System.out.println("类代码块");
}


类代码块属于类,在类的加载的时候就会执行,而实例代码块在对象的创建的时候会执行。 

 


评论 0

暂无评论
0
0
0
立即
投稿
发表
评论
返回
顶部