主要整理新近学习的java面向对象的知识点,有一些内容涉及和之前相似内容的比较。
java中新定义一个class类的时候为什么要用new?
c语言中的相关知识:
c语言中的结构体,只需在前面声明结构体的内部结构,定义变量之后便可直接使用,不用特别的再申请新的存储空间。
c++中的类
这是c++中的类的定义,无需特意用new申请存储空间
指针的用法(定义之后必须初始化之后才能使用)
用new初始化:
可以成功输出地址
用malloc初始化:
依然可以成功输出地址
综上分析得:输出的语句为输出指针的内容(存储的为地址)而定义指针的过程只是为指针申请了存储空间,并没有说明其需要指向的地址是哪,所以只定义不初始化就输出会有错误;
JAVA中对new的使用:
是调用构造函数的一种方法
下面是刚学习的java的知识的总结:
一、类的修饰符
类及其属性、方法可以同时有一个以上的修饰符来修饰。
1.不加修饰符,即直接声明class A{}
这是“默认访问模式”,在该模式下,这个类只能被同一个包中的类访问或引用;
2.存在修饰符
1)public:将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。
2)abstract:将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。
3)final:表示其为非继承类,不能被其他类继承。
**区分其他修饰符:
1.成员变量修饰符:
1)public:此变量可以被任何对象的方法访问。
2)private:该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问。
3)protected:能被同一个包中的所有类访问,可以被不在一个包中的子类访问。
4)friendly:在同一个包中的类可以访问,其他包中的类不能访问。
5)final表示此变量中的值不能变
6)static:指定变量被所有对象共享,即所有实例都可以使用该变量,变量属于这个类。
7)transient:指定该变量是系统保留,暂无特别作用的临时性变量
8)volatile:指定该变量可以同时被几个线程控制和修改。
2、方法修饰符
1)public
2)private:这个方法只能自己访问(子类不能覆盖父类的私有方法);
3)protected:可以被同一个包中的对象访问
4)static:不需要实例化就可以激活的一种方法
5)final:指定该方法不能被重载
6)synchronize:同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁
7)native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。
二、类的成员
变量、方法、内部类
练习题总结
1、
2、
一个类的静态方法不可以访问该类的非静态成员变量
原因:静态方法属于类本身,在类加载的时候就会分配内存,但是非静态成员只有在类的对象产生(创建类的实例的后)才会分配内存,上述操作之所以会出错是因为类的非静态成员不存在的时候方法就已经存在了,访问一个内存不存在的东西当然会出错。