Java教程

11-Java面向对象高级

本文主要是介绍11-Java面向对象高级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

类变量和类方法

  • 类变量
    类变量快速入门
    类变量,也叫静态变量,所有对象均共享此变量,static修饰
  • 不管static变量放在那里,有可能放在堆,也有可能放在方法区,jdk8以上放在堆,之前的版本可能放在静态域方法区
  • static变量是同一类所有对象共享
  • static类变量在类加载的时候就生成了,所有没有创建对象实例也可以访问
  • static类变量除了静态方法,在普通方法可以用this和super修饰
package com.hspedu.static_;

public class VisitStatic {
    public static void main(String[] args) {
        // 类名.类变量名
        System.out.println(A.name);
    }
}

class A{
    //
    public static String name = "韩顺平教育";
}
  • static依然准守相应的访问权限
package com.hspedu.static_;

public class ChildGame {
    public static void main(String[] args) {
//        int count = 0;
        Child child1 = new Child("白骨精");
//        count++;
        child1.count++;
        Child child2 = new Child("狐狸精");
//        count++;
        child2.count++;

        //类变量可以通过类名进行访问
        System.out.println("共有" + Child.count + "小朋友加入游戏");
        System.out.println("共有" + child1.count + "小朋友加入游戏");
        System.out.println("共有" + child2.count + "小朋友加入游戏");



    }
}

class Child{
    private String name;
    // 定义一个变量,是一个类变量(静态变量)static 静态
    // 该变量最大的特点就是会被所有Child 类的所有对象实例共享
    public static int count = 0;
    public Child(String name) {
        this.name = name;
    }

    public void join(){
        System.out.println(name + "加入游戏");
    }
}

  • 类变量使用细节

  • 类方法

  • 类方法是使用场景

package com.hspedu.static_;

public class StaticMethod {
    public static void main(String[] args) {
        // 创建两个学生对象,交学费
        Stu tom = new Stu("tom");
        tom.payFee(100);
        Stu mary = new Stu("mary");
        mary.payFee(200);


        // 输出总方法
        Stu.showFee();
    }
}


class Stu{
    private String name; // 普通成员
    // 定义一个静态变量,累计学生的学费
    private static double fee = 0;

    public Stu(String name) {
        this.name = name;
    }

    // 1.放方法使用了static修饰后,该方法就是静态方法
    // 2.静态方法就可以访问静态变量
    public static void payFee(double fee){
        Stu.fee += fee;
    }

    public static void showFee(){
        System.out.println("总学费:" + Stu.fee);
    }
}
  • 静态方法只能访问静态方法和静态变量
  • 静态方法不能访问对象相关的关键字,比如this或者super,不能访问普通成员(非静态成员)
  • 普通方法可以访问静态方法和静态变量

理解main方法语法

代码块

  • 我们不管调用哪个构造器,都会优先调用代码块
  • 对构造器的一种补充机制,可以初始化一些操作

单例设计模式

final关键字

抽象类

接口

内部类

这篇关于11-Java面向对象高级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!