• Java 类和对象


    主要参考文献:王映龙《Java程序设计》

    一:类的语法

    [修饰符]class<类名>[extends父类名][implements接口列表]{

      //类体
    }

    1:修饰符

    可选值为:

    • public:该类可以被任何类使用;
    • abstract:该类为抽象类不能被实例化;
    • final:该类为最终类,不能被继承;
    • 省略:JAVA编译器会给它一个默认值,说明该类只能被同一个包中的其他类使用。

    2:class<类名>

    • 如果此类中含有main方法,则此Java文件的名字也要与此类名相同;
    • 在同一个Java文件中,定义了多个类,它的类修饰符只能声明含有main方法的类为public。

    3:extends父类名、implements接口列表

    • 一个类可以继承另一个类里面的非私有的成员;
    • 在Java语言中只允许单继承,但在现实世界里都是多重关系,我们可以通过接口或者内部类来实现这种多重关系。

    4:类体(主要由成员变量和成员方法组成)

    (1)成员变量

     [修饰符][static][final]<变量类型><变量名>;

    • 修饰符:可选,是指该变量的访问权限,取值为public、protected和private。
    • static:可选,用于指定该成员变量为静态变量。静态变量不属于某个变量,而属于类本身,通过“类名.变量名”的方式访问。静态变量是在运行时JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。
    • final:可选,说明该成员变量是常量

    成员变量/局部变量

    • 不能使用public、protected、private和static关键字对局部变量进行声明;
    • 作用范围不同,成员变量是在类中声明的,在整个类中都有效,局部变量是在方法内声明的变量,在方法里有效;
    • 成员变量在定义时可以不用初始化,而局部变量必须初始化。

    (2)成员方法

    [修饰符]<方法返回值的类型><方法名>([参数列表]){
    //方法体
    }

    • 方法的名字不能与类同名,除了构造方法;
    • 如果在同一个类里面出现多个同名方法,但返回值类型或方法参数不同,或者参数类型不同,就会构成方法的重载(overload)。
    • 但如果两个以上的方法定义中,方法的参数个数与类型相同但只有返回值类型不同,则不构成方法的重载,同时编译时会报错。

    二:构造方法

    • 一种特殊的方法,它的名字必须与它所在类的名字相同,并且没有返回值,也不需要用void进行标识。
    • 一般构造方法声明为public;
    • 用来创建对象、实例化对象的;
    • Java编译器自动会提供一个不带任何参数并且是空的构造方法,但如果显式地在类中定义了构造方法,那么Java编译器就不提供默认的构造方法了。
    • 一个类里面可以定义多个不同参数的构造方法。

    三:main方法

    public static void main(String []args){}

    • main方法是属于类的;
    • 其中的String []args字符串数组参数是可以从键盘获得输入的字符。

    四:创建及使用对象

    class Student{
        String no;//学号
        String name;//姓名
        int age;//年龄
        //定义一个学生上课的方法
        public void goToClass(){
            System.out.println(name+"学生去上课!");//"+"表示字符串连接
         }
    }
    public class Test{
        //入口函数
        public static void main(String []args){
            Student stu=new Student();//实例化一个学生对象
            //给对象赋初值
            stu.no="soft001";
            stu.name="张三";
            stu.age=20;
            stu.goToClass();//通过对象调用上课的方法
        }
    }    

    注:在C/C++等程序设计语言中,使用完了分配的内存后,需要手动释放该内存。但Java中释放内存操作不需要手工进行,Java提供垃圾回收机制来自动进行这些操作(垃圾收集器、finalize()方法等);但被丢弃的对象何时被销毁是无法获知的。

    五:this引用

    this是指正在执行的当前对象。this的另一个用途是当方法的局部变量与类成员变量重名时,在方法里面就隐藏了类的成员变量。此时可以通过“this.类的成员变量”的方式来访问,因为this代表当前对象。如:

    public class Student{
        String name;
        public Student(String name){
            this.name=name;
        }
        public static void main(String []args){
            Student stu=new Student("soft");
        }
    }
    this关键字的实例

    一个类的多个构造方法之间也可以相互调用。当一个构造方法需要调用此类中的另一个构造方法时,可以使用this关键字,同时Java要求这个调用语句是整个构造方法的第一行代码。如:

    public class Student{
        String name;
        public Student(String name){
            this.name=name;
        }
        public Student(){
            this("soft");
        }
        public static void main(String []args){
            Student stu=new Student();
        }
    }

    六:static关键字

    1. static方法就是没有this的方法;
    2. 静态方法的执行是不依赖于某个对象的,而属于类本身;
    3. 不必创建对象,通过类名就可以调用静态方法,例如Math.random();
    4. 静态方法不能调用非静态的方法或变量,但可以通过先创建对象,再利用对象去调用。
    5. 类的构造器实际上就是静态方法;
    6. 可用来形成静态代码块来优化程序(只会在类初次加载时执行一次);
    7. static块可出现在类中的任何地方(除了方法内部);
    8. 不允许用来修饰局部变量。
  • 相关阅读:
    微信小程序购物商城系统开发系列-工具篇
    CSS实现导航条Tab切换的三种方法
    最详细win7下手动搭建PHP环境:apache2.4.23+php7.0.11
    读书笔记:《HTML5开发手册》Web表单
    jQuery可拖拽3D万花筒旋转特效
    框架基础:关于ajax设计方案(三)---集成ajax上传技术
    框架基础:ajax设计方案(二)---集成轮询技术
    框架基础:ajax设计方案(一)---集成核心请求
    Apache+PHP+MySQL
    自学 PHP,如何不走弯路?
  • 原文地址:https://www.cnblogs.com/sange3/p/5333037.html
Copyright © 2020-2023  润新知