欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 类和对象

程序员文章站 2024-03-15 18:11:30
...

1,定义规则

定义类

        限定符  class   类名称{ 

                                 属性/静态属性;

                                 构造方法(必须要有,如果没有,系统默认定义一个无参构造);

                                  方法/静态方法;

                                   }

(1)属性

            限定符    变量类型    变量名

(2)构造方法

           限定符   类名称(形参列表){执行语句}

(3)方法

           限定符   返回值类型    方法名称  (形参列表){执行语句}

2,实例化对象的语法

最常见创建对象的方法是使用new语句

Student student = new student();

(1)new 关键字,计算对象内存大小,在堆中申请内存空间,把空间都初始化为0X0;

(2)执行构造方法      对属性进行初始化;

(3)把对象的引用赋值给一个引用变量;

java 类和对象

3,访问对象属性或调用对象的方法

(1)在同一个类中访问对象和调用对象的方法

访问属性              this.属性名

调用对象             this.方法名称  (实参列表)

(2)在其他类中访问对象或调用对象的方法

访问属性            对象的引用.属性名

                          Person  p= new person();   p.name;

                          new Person().name;

调用对象            对象的引用 .  方法名称(实参列表)

                         Person  p = new  person();   p.toString();

                         new Person().toString();

这里要注意:一个类中只能遇一个public类,该类的名称必须与类名称一致;

                      一个类只会生成一个class字节码文件

 4,This关键字的作用

(1)可以在构造方法中调用其他构造方法,必须出现在第一行

(2)代表该方法被调用时当前对象的引用 

 

我们必须知道:在静态方法(静态上下文)中,无法使用This关键字,因为没有一个隐式的对象和该方法绑定;

       1)不能访问普通属性

        2)不能调用普通方法

5,面向对象的三大特征

封装,继承,多态

6,理解类和对象的内存模型

类信息存在    方法区

属性信息        堆区

7,访问修饰符

在Java语言中有4中访问修饰符:package(默认)、private、public和protected。

1。package是默认的保护模式,又加做包访问,没有任何修饰符时就采用这种保护模式。包访问允许域和方法被同一个包内任何类的任何方法访问.(包内访问)。

2。private标识得访问模式,表示私有的域和方法只能被同一个类中的其他方法访问,实现了数据隐藏;必要时,可以通过方法访问私有变量.(类内访问)。

3。public修饰符用于暴露域和方法,以便在类定义的包外部能访问它们。对包和类中必要的接口元素,也需要使用这个级别;main()方法必须是public的,toString()方法也必须是public的。一般不会用public暴露一个域,除非这个域已经被声明为final。(跨包访问)。

4。protected修饰符提供一个从包外部访问包(有限制)的方法。在域和方法前增加protected修饰符不会影响同一个包内其他类的方法对它们的访问。要从包外部访问包(其中含有protected成员的类),必须保证被访问的类是带有protected成员类的子类。也就是说,希望包中的一个类被包之外的类继承重用时,就可以使用这个级别。一般应该慎用。(包中类被包外类继承慎用)。

java 类和对象

8, 属性初始化

1 .属性初始化:(发生在对象实例化时)

    (1)定义时初始化

     (2)构造代码块

      (3)在构造方法中初始化   

2 . 静态属性的初始化:(发生在类被加载时)

       (1)定义初始化时

       (2)静态构造代码块

public class A {
	A() {
		a = 30;
	}
	
	{
		a = 0;
		}
	int a = init();
	{
		a = 20;
		}
	
	
	int init() {
		return 10;
	}
	
	static {
		staticA = 100;
	}
	static int staticA = staticInit();
	static {
		staticA = 300;
	}
	
	static int staticInit() {
		return 200;
	}
	
	
	public static void main(String[] args) {
		A p = new A();
		A q = new A();
	}
}

java 类和对象