在JAVA私塾学习时整理的一套学习笔记---第三章
第三章Java类和对象一. 面向对象初步
二. 面向对象三大特征:
1. 封装:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;尽可能隐藏对象的内部结构。
同一个类中 同一个包中 不同包中的子类对象 任何场合
Private Yes
Default Yes Yes
Protected Yes Yes Yes
Public Yes Yes Yes Yes
2. 继承:如果一个对象A继承自另一个对象B,就把这个A成为B的子类对象,而B成为A的父类对象。继承可是子对象具有父对象的各种属性和方法,而不需要再次编写相同的代码。同时,可以重新定义某些属性,并重写某些方法,即覆盖父对象的原有属性和方法,使其获得与父对象不同的功能。
3. 多态:同一种行为的多种不同表达,或者同一种行为的多种不同实现就叫做多态。
三. JAVA类的基本构成
包:包是类接口或其他类的集合,包主要用来将类组织起来成为组,从而对类进行管理
(1) 允许将包含类代码的文件组织起来,易于查找和使用适当的类
(2) 包不止是包含类和接口,还能包含其他包。形成层次的包空间。
(3) 有助于避免命名冲突。
JDK中常用的包:java.lang---包含一些java语言的核心类,包含java语言设计基础的类。Object类是所有类的基类。
java.awt---包含构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.swing---定义java版的图形用户界面(GUI)解决方案,提供了很多完备的组建,可以对复杂的桌面系统构建。
包含执行于与网络相关的操作的类。
提供多种输入输出功能的类。
java.util---包含一些实用工具类,如定义系统特性,使用与日期日历相关的方法。还有重要的集合框架。
每个源文件只有一个包的声明,而且包名应该全部小写。
编译和生成包
带包编译: javac –d destpath Test.java
javac –d c:\test\ Test.java
带包运行:java p1.Test
java类搜索方式:import语句引入p1包内的Test类,假定环境变量CLASSPATH的值为,“.; c:jdk\lib; d:\ex”,java运行环境将依次到下述可能的位置寻找并载入该字节码文件 Test.java
.\p1\Test.java
C:jdk6\lib\p1\Test.java
D:\ex\p1\Test.class
构造方法:创建对象并初始化成员变量。创建对象时会自动调用类的构造方法。
定义规则:必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。一般构造方法都用public类型来说明,这样才能在程序的任意位置创建类的实例对象。
说明:每个类至少有一个构造方法。如果不写构造方法,java编程语言将提供一个默认的,该构造方法没有参数,而且方法体为空。如果一个类中已经定义了构造方法,则系统不再提供默认的构造方法。
析构方法:析构方法finalize的功能是:当对象被从内存删除时,该成员方法将会被自动调用。
带参数的方法被调用:先分配形参空间,然后将实参复制给形参。
参数可变的方法(JDK5.0开始):
public class Test{
public static int sum(int……n){
int total = 0;
for(int i=0; i<n.length; i++){
total += n[i];
}
Return total;
}
Public static void main(String [] args){
System.out.println(Test.sun(10,100,1000));
}
}
四. 如何使用一个java类
this关键字:
(1) 点去成员;
(2) 区分同名变量;
“this.变量”调用的是当前属性的变量值,直接使用变量名称调用的是相对距离最近的变量值。
(3) 作为方法名来初始化对象;
相当于调用本类的其他构造方法,他必须作为构造方法的第一句。
五. 引用类型
public class TempTest {
private void test1(A a){
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println("main方法中的age="+a.age);
}
}
class A{
public int age = 0;
}
运行结果:
test1方法中的age=20
main方法中的age=20
六. 变量
在方法外定义的变量被自动初始化,局部变量必须在使用前“手工”初始化。
七. 包装类
基本数据类型 对应的包装类
boolean Boolean
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
Integer t = new Integer(i); 包装,装箱
Int j = t.intValue(); //j=500 拆箱
八. 类型转换
强制类型转换:
强制类型转换只能用在原本就是某个类型,但是被表示成了另外一种类型的时候,可以把它强制转换回来。强制转换类型并不能在任意的类型间惊醒转换。
变量可自动被升级为一个较长的形式。
byte—--short--—char--—int--—long--—float----double
自动包装和解包
自动包装:把基础数据类型自动封装并转换成对应的包装类的对象。
自动解包:把包装类的对象自动解包并转换成对应的基础数据类型。
Integer a1=5; //自动包装
Int a2 = new Integer(5); //自动解包
强制类型转换:在一个类型前面加(),来强制转换
long l = 9L;
int i = (int)l;
自动类型转换:
int i = 5;
String str = ""+i;
向上造型:把范围小的造型为范围大的类型,
int i = 2;
long l = i;
九. 什么是实例变量?什么是局部变量?什么是类变量?什么是final变量?
实例变量:类中定义的变量,即类成员变量,如果没有初始化,会有默认值;
局部变量:在方法中定义的变量,必须初始化;
类变量:用static可修饰的属性;
final变量: final属性只允许赋值一次,且只能通过构造方法赋值;定义后也就是一 个常量。
定义规则和使用规则
实例变量:它不需要static关键字来声明,只要对象被当作引用,实例变量就将存在;
局部变量:在方法内任意定义变量即为局部变量;
类变量:必须用static修饰;
final变量:不可以再修改的。
第三章Java类和对象.pdf
(116.19 KB)