java基础-面向对象基本语法、main函数与访问控制


对象就是真实世界的实体,对象与实体一一对应。
只支持单继承:只能继承一个父类
但是可以继承接口,给出自己的方法实现。

基本语法

定义类

[public][abstract|final]class<class_name>[extends<class_name>]
[implements<interface_name>] {
    //定义属性部分
    <property_type><property1>;//定义方法部分
    function1();}

abstract:抽象类。抽象类不能实例化,可以有抽象方法和具体方法。除非子类也是抽象类,不然继承它的子类必须实现该抽象类中的所有抽象方法。
final:不允许被继承。final类的方法就是final方法了。变量可以不是final。

类名语法:类名应以下划线或字母(推荐)开头,多单词应该每个单词首字母都大写。

定义类的变量

[public|protected|private][static][final]<type><variable_name>

static:类变量/静态变量
final:常量,值不能更改(如果是对象的话,表示其引用不可以再改变)。只能在定义处或者在构造函数中赋值。
成员变量被声明的同时可以初始化,否则系统会用默认值初始化它们。
数组引用类型的默认值是null,如果创建了数组变量的实例,但没有显式为各元素赋值的话,那才采用对应类型的默认值。

定义类的函数

static:静态方法。静态方法不涉及实例,所以不能使用this/super,也不能访问非静态的变量和方法。
final:该方法不能被重写。可以被继承,但是只能被实现一次。
abstract:抽象方法。不能提供具体实现。且有一个抽象方法就是抽象类了。
另外:

  • 构造函数不能被 static、final、synchronized、abstract 和 native 修饰。
  • 隐含的创建对象:例如String s = “hello”;
  • 在类中重载public String toString(){}后, System.out.println(类名);就可以直接打印了。
  • 可变参数语法
    methodName({paramList},paramType…paramName)
    其中paramList是固定参数列表,paramType是可变参数列表的类型,…表明是可变的,paramName是名称

finalize()函数

Object类中提供的一个protected方法。一旦gc(垃圾回收)准备好释放对象占用的存储空间时,会先调用finalize()方法(还会调用其他处于此种状态的对象的finalize()函数,这些调用中可能会让变量回到不需要被回收的状态,如果该对象一直都是这种状态,那才会被回收),并在下一次垃圾回收发生时,才会真正回收内存。但是实际回收的条件是,对象没有引用指向它了,但是这个是无法预知的,所以finalize()何时调用并不确定。只有当本地方法中产生了C/C++代码分配的内存,才可以把free/delete放到finalize()中,但是这个情况很少,完全可以及时用完及时释放。

main函数

public static void main(String[] args)
{
    //方法体
}

注意:main()方法是静态的,所以如果要调用本类中的其他方法,那么那个方法也应该是静态的,否则需要先创建本类的实例对象,然后用对象调用成员方法。args数组是接收Java程序的命令行参数的。
静态方法不涉及实例,所以不能使用this/super,也不能访问非静态的变量和方法。
但是非静态方法就可以直接访问静态变量/方法了。
静态代码块:static{}
要单独写,不能写在方法中。每个静态代码块只会在加载类的时候执行一次,(如果类中有多个静态代码块,那么将按在类中出现的顺序依次执行)而非静态的则会在创建实例时再次执行。

class Untitled {
    public static int count=0;
    {
        count++;
        System.out.println("非静态代码块 count="+count);
    }
    static
    {
        count++;
        System.out.println("静态代码块 count="+count);
    }
    public static void main(String[] args) {
        System.out.println("*************** StaticCode1 执行 ***************");
        Untitled sct1=new Untitled();
        System.out.println("*************** StaticCode2 执行 ***************");
        Untitled sct2=new Untitled();
    }
}

输出:
在这里插入图片描述

访问控制

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值