1.面向对象方法的特征
1.抽象:同类型抽象出共同属性和行为形成类
2.封装:数据和处理数据方法封装分到一个类
3.继承:在已有的基础上去产生新的类
4.多态:在继承的基础上,父类和子类具体响应可以不同
个人理解:
1.抽象:将实际对象符号化,用数据或方法表示实际含义
例:钟表类,int hour 表示小时 ,showtime()表示显示时间
2.封装:就是把数据和方法封在一起,将使用者和设计者区分,使用者不必关注内容
3.继承:站在巨人的肩膀上,子类可以获得父类的数据和方法,并可以修改和增加方法。
4.多态:父类和子类都能响应同名消息,具体实现方式可以不同
2.类声明与对象创建
1.类是一类对象的描述:人
2.对象是类的具体实例:小明
如果要使用类,必须创建对象
定义方法:
基本数据类型: int a
对象: People xiaoming = new People()
分配内存空间,默认初始化为空
3.类里面声明数据成员
数据成员:任何类型
实例变量:无static,每个对象都有的属性,但在对象中值可以不同
类变量(静态变量):有static 整个类只有一个值
例:圆的半径(R),圆周率(π )就是实例变量和静态变量。
实例变量:只有对象名.实例 引用 y1.R
静态变量:类名和对象名都可以引用 yuan.π == y1.π
4.类里面声明方法成员
和c语言的函数类似,都有名字和参数
实例方法:无static 对象的行为
类方法(静态方法):有static 公共的方法,共同的行为
实例方法:对象名调用
静态方法: 类名直接调用,对象名调用
参数传递:
值传递:基本数据类型,传完就没关系
引用传递:对象类型或数组,和c的指针很像。
可变长参数: 类...变量名
(引用数组,元素不确定)
定义一个数组,把变量名的值赋值过去
用增强型for循环: for(类.r : 数组名){ 这样就可以完美遍历}
5.包
一组类的集合,也可以有多个子包
作用:
1.将相关源代码组织一起
2.避免类名冲突
3.提供包一级的封装及存取权限
编译单元:
一个java源代码文件称为一个编译单元:
1.所属包的声明
2.import包的声明
3.类和接口的声明
一个编译单元只有一个public类,类名与文件名相同。编译单元中其他类起辅助作用,称为缺省的default类
包的分类:
命名的包:package 包名
默认包:不含包的声明
引入包:import 包名.类名(*) *代表所有(在同一个java项目下)
静态引入:
单一引入:某一个指定静态成员:import static java.lang.Math.PI;
全体引入:引入全体静态成员:import static java.lang.Math.*;
6.类的访问权限控制
1.公有(public) 可被任何方法访问
2.保护(protected)只被同一类及其子类方法访问
3.私有(private) 只可被同一类的方法访问
4.默认(default)仅允许同一个包内的访问
为了访问私有类,我们需要提供公有方法,get和set方法
get方法:一般get+你要获取的类名
例: public int getReids{ return redis}
set 方法:一般set+你要改的类名
用this关键字 更容易理解代码。
例:public int setRedis(redis) { this.redis = redis}
7.对象的初始化
构造方法:对实例变量初始化
构造方法:
1.方法名与类名相同
2.不定义返回类型
3.通常被声明为公有
4.可以有任意多个参数
5.生成对象时自动调用
定义构造方法:
1.生成对象时给构造方法初始值,进行初始化
2.构造方法可以被重载
重载:一个类中有两个及以上同名方法,参数不同
避免冗余:使用this关键字,参数少的调用参数多的。
下面的代码,定义构造方法和重载
public class iu2 {
int amt;
String bmt;
float cmt;
public iu2() {
this(1,"2",3);
}
public iu2(int a,String b) {
this(a,b,3);
}
public iu2(int a,String b,float c) {
amt =a;
bmt =b;
cmt=c;
}
}
下面代码 是对象的初始化。
import static java.lang.Math.PI;
public class iu {
public static void main(String[] args) {
// TODO 自动生成的方法存根
iu2 a = new iu2(1,"2",3);
iu2 b = new iu2(1,"2");
iu2 c = new iu2();
System.out.println(a.amt);
System.out.println(a.bmt);
System.out.println(a.cmt);
System.out.println(b.amt);
System.out.println(b.bmt);
System.out.println(b.cmt);
System.out.println(c.amt);
System.out.println(c.bmt);
System.out.println(c.cmt);
}
}
8.内存回收
无用对象:离开了作用域的对象,无引用指向的对象
java运行时系统通过垃圾收集器周期性释放无用对象所使用的内存
垃圾收集器:自动扫描对象动态内存区,对不在使用的对象做上标记,进行垃圾回收
finalize()方法:每个类中都有,在内存被回收前一时刻调用,用于释放资源,可能在任何时机以任何次序执行
9.枚举类
可取值有一定范围,所有可取值可以一一列举
enum 枚举类型名称{}
特点:一个类,不能继承其他类,类体中可包括方法和变量。