- 计算机语言的发展过程
2. 人们将对象的静态特征抽象为属性,用数据来描述,在Java语言中称之为变量;人们
将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在Java语言中称之为方法,。一个对象由一组属性和一组对属性进行操作的方法构成。
类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的类对象,然后通过类对象去访问类的成员变量,去调用类的成员方法来实现程序的功能。这如同“汽车”本身是一个抽象的概念,只有使用了一辆具体的汽车,才能感受到汽车的功能。
3. 封装机制在程序设计中表现为,把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调动其内部的功能方法。
封装机制的另一个特点是,为封装在一个整体内的变量及方法规定了不同级别的“可见性”或访问权限。
4. 继承 拥有反映事物一般特性的类,然后在其基础上派生出反映特殊事物的类。
- 多态是允许程序中出现重名现象。
Java语言中含有方法重载与成员覆盖两种形式的多态。
方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。
成员覆盖:子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同。 - 汽车设计图就是“类”,由这个图纸设计出来的若干的汽车就是按照该类产生的“对象”。可见,类描述了对象的属性和对象的行为,类是对象的模板。对象是类的实例,是一个实实在在的个体,一个类可以对应多个对象。
7.类的定义(类名首字母建议大写)
8.创建新的对象
类名 对象名 = new 类名() ;
1、声明指向"由类所创建的对象"的变量
2、利用new创建新的对象,并指派给先前所创建的变量。
Person p ; // 先声明一个Person类的对象p
p = new Person() ; // 用new 关键字实例化Person的对象p
对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。
当语句执行到Person p的时候,只是在栈内存中声明了一个Person的对象p,但是这个时候p并没有在堆内存中开辟空间,所以这个时候的p是一个未实例化的对象,用new关键字实际上就是开辟堆内存,把堆内存的引用赋给了p,这个时候的p才称为一实例化对象。
9.访问对象中某个变量或方法
访问属性:对象名称.属性名
访问方法:对象名称.方法名()
对Person对象p的访问操作过程
10. 封装类中的属性和方法(用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用)
封装属性:private 属性类型 属性名
封装方法:private 方法返回类型 方法名称(参数)
封装属性后加入一些setXxx()、getXxx()方法,可用来设置和取得类中的私有属性。
11. Person p1 = null ; // 声明一对象p1,此对象的值为null,表示未实例化
如果在程序最后又加了一段代码,令p2=null,则之前由p1创建的实例化对象不再有任何对象使用它,则此对象称为垃圾对象
12. public static void fun(Change c1) {}//声明这个fun方法,接收参数类型为Change类型
- System.out.println(new Person().talk());//声明了一Person匿名对象,调用Person类中的talk()方法。
由程序中可以发现用new Person()声明的对象并没有赋给任何一个Person类对象的引用,所以此对象只使用了一次,之后就会被Java的垃圾收集器回收。
14.构造方法 所完成的主要工作是帮助新创建的对象赋初值。
1、它具有与类名相同的名称
2、它没有返回值
一般的方法是在需要时才调用,而构造方法则是在创建对象时,便自动调用,并执行构造方法的内容。因此,构造方法无需在程序中直接调用,而是在对象产生时自动执行。
可利用它来对对象的数据成员做初始化的赋值。所谓初始化就是为对象的赋初值。
class Person { public Person() // Person类的构造方法
{ System.out.println(“public Person()”) ; }
如果在程序中没有明确声明一构造方法的话,系统会自动为类加入一个无参的且什么都不做的构造方法。例:public Person() {}
15. 在Java里,不仅普通方法可以重载,构造方法也可以重载。只要构造方法的参数个数不同,或是类型不同,便可定义多个名称相同的构造方法。
在java程序中只要明确的声明了构造方法,则默认的构造方法将不会被自动生成。
16.对象的比较
“= =”操作符用于比较两个对象的内存地址值是否相等,equals()方法用于比较两个对象的内容是否一致。
17.
String对象一旦声明则不能轻易改变,如果要改变则需要先断开原有的对象引用,再开辟新的对象,之后再指向新的对象空间。
用new String(“java”)方式实例化String对象时,实际上是开辟了两个内存空间,所以一般在开发上都采用直接赋值的方式,即:String str1 = “java” 。
-
this表示当前对象,而所谓的当前对象就是指调用类中方法或属性的那个对象。
this()调用构造方法必须放在首行。 -
在java中提供有static关键字,用它来修饰类的属性后,则此属性就是公共属性了。
所有的对象都指向同一个city属性,只要当中有一个对象修改了city属性的内容,则所有对象都会被同时修改。
用static方式声明的属性,也可以用类名直接访问,拿上面的程序来说,如果想修改city属性中的内容,可以用如下方式:
Person.city = “美国” ;
所以有些书上也把用static类型声明的变量,称之为“类变量” -
static既可以在声明变量时使用,也可以用其来声明方法,用它声明的方法有时也被称为“类方法”
在使用static类型声明的方法时需要注意的是:如果在类中声明了一static类型的属性,则此属性既可以在非static类型的方法中使用,也可以在static类型的方法中使用。但用static类型的属性调用非static类型的属性时,则会出现错误。 -
对象数组的使用
1、声明类类型的数组变量,并用new分配内存空间给数组。
2、用new产生新的对象,并分配内存空间给它
例如,要创建三个Person类类型的数组元素,可用下列的语法:
Person p[] ; // 声明Person类类型的数组变量
p = new Person[3] ; // 用new分配内存空间
创建好数组元素之后,便可把数组元素指向由Person类所产生的对象:
p[0] = new Person () ;
p[1] = new Person () ; 用new产生新的对象,并分配内存空间给它
p[2] = new Person () ;
22.内部类
外部类是无法找到内部类中所声明的属性。而内部类则可以访问外部类的属性。
用static也可以声明内部类,用static声明的内部类则变成外部类,但是用static声明的内部类不能访问非static的外部类属性。
23.在类外部引用内部类
24.在方法中定义内部类
25. 在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。
26.javadoc标记
为变量做注释可以使用@see, @since, @serial,@serialField, 和@deprecated文档标记。
为类做注释可以使用@see, @author, @since,@deprecated, 和@version 文档标记。
为方法做注释可以用@see, @return, @param, @since,@deprecated, @throws, @serialData, 和@exception文档标记。
而{@link} 或{@docRoot}标记则可以用在任何地方。
-
要访问到对象里的某个属性(field)时,可通过“对象名称.属性”语法来实现,如果要调用封装在类里的方法,则可通过“对象名称.method”语法来实现。
-
私有成员(private member)可限定类中的属性,被限制成私有的属性仅能供同一类内的方法所访问。
-
类外部可访问到类内部的公有成员(public member)
-
从某一构造方法内调用另一构造方法,是通过this() 这个关键字来完成的。