Java——类和对象

对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和操作组成。
类:是同种对象的集合与抽象
object oriented programming OOP            procedure oriented programming POP

局部变量必须先赋值再使用,否则会出现编译错误
当一个实例对象被创建时,若没有初始化,系统会对其中各种类型的成员变量自动进行初始化赋值。
局部变量如果没有初试化,系统不会给他初始化;堆对象如果没有人为的给他初始化,系统会给他初始化;


常量-final关键字: 和C++const一样作用,不过java定义可以在任何地方初始化
final int aFinalVar=0;         ==      final int aFinalVar;  aFinalVar=0;
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
被同时声明为 static和final的变量 又称为 命名常量(Named Constant) ,用于表示那些在类的使用范围内有意义的常数或不变对象,命名常量的变量名通常都是大写字母,单词之间用下划线“_”连接
final变量如果是对象引用(object reference),则该引用本书无法被再次赋值,但是仍然可以通过该变量去改变所引用对象的状态


成员变量的隐藏性(局部变量没有):
局部变量与成员变量名字相同时,则成员变量将被隐藏,即在这个方法内暂时失效,只有局部变量起作用


static关键字修饰成员变量(变量放在栈上,存放在方法区): 使用static关键字后,该变量成为静态成员变量或称类成员,在内存中只有一份,为该类所有实例对象共享,任何实例访问它将得到同一个值;访问方式   类.静态变量     实例对象.静态变量(不推荐)


Access Control (域的访问控制):
        public — 共有的,域在 任何地方都可以访问。

        protected — 受保护的,仅在 类体中、子类类体中或同包的其它类类体中可访问。即:在类中被申明为保护的域可以被同一个包中的该类的对象访问。也 能被其子类访问,而不管它们是否在同一个包中

       private — 私有的,域仅在 类体中可访问。只有同一类中创建的对象才能访问私有域。在其他类中创建的对象不能访问私有域。

        (不写)— 默认的 package,没有任何访问修饰符修饰的域,仅在 类体中、同包的其它类类体中可访问。


是否可以访问 public protected private 缺省(package)
该类内部
同一个包的子类 ×
不同包的子类 × ×
同一个包的非子类 ×
不同包的非子类 × × ×

注意:java中new申请出来的变量都是存在堆上的,当函数传参的时候不要和C++混淆,都是传的地址;(和C++大不同)
private static void func(Demo d1,Demo d2){
                int a;
                a=d1.a;
                d1.a=d2.a;
                d2.a=a;
}  //d1,d2拿到原本在堆上的地址,交换是通过地址交换的,改变了堆上的值

public static void swap(int x,int y){
                int temp=x;
                x=y;
                y=temp;
}   //同上
private static void func2(Demo d1,Demo d2){
                Demo temp;
                temp=d1;
                d1=d2;
                d2=temp;
}   //栈上的d1,d2的地址交换了,仅仅指向交换了,原本堆上的值没有变

public static void swap2(int[] array){
                int temp=array[0];
                array[0]=array[4];
                array[4]=temp;
}  //拿到堆上数组地址首地址,array[0]和array[4]交换实际上是用地址交换了,改变了值


Java Package的作用是什么: 程序要引用一个类,必须在开头import引入包名和带上类名  import.包名.类名; ;如果一个类没有在类里最开头写明 package.包名; ,那么其他包的类就没办法引用该类;如果不建包,直接在项目里写类,默认是在 import java.util.类名; 这个系统包里;









猜你喜欢

转载自www.cnblogs.com/meihao1203/p/9181540.html