java是一门面向对象的语言。强大之外,在于抽象。
为什么诞生了面向对象的语言?
面向过程的语言:把待解决的问题,分解成一系列的步骤,一步一步去执行,执行结束,问题解决。
面向对象的语言:把待解决的问题,描述成多个不同的对象,互相协作的过程。
类,是类型(引用类型),而对象是某一个类型的实例。
class:类,即类型的含义。
有了类型之后,就可以创建此类型的对象。
对象是一个整体,拥有状态(属性值,用数据来描述),描述静态特性。对象拥有动态特性,拥有动态行为。
面向对象是一种编程思想。
public 公有的 ,可以被其他人访问。 类名首字母大写
Student stu1 = new Student();//new是用来创建对象的
Student stu2 = stu1;//运行两个语句,也是创建了一个对象,即stu1
静态特性使用变量来描述的,而动态特性是用函数来描述的。
例:学生类中
//用来描述对象的静态特性。
构造函数(构造方法)(首字母大写)
构造函数,是用来构造对象,初始化对象的数据的。和类名称相同,无返回值。
特点:跟类同名,无返回值。
可以使用成员访问修饰符,但不能使用final 和 static等
一个构造函数可以调用另一个构造函数,“this()”,但必须作为第一句代码。
构造方法的调用:
**** 构造方法:方法名称与类名相同,没有返回类型部分。
例1:Test220515A(){xxx}
例2:Test220515A(int b){}
调用:Test220515A t2 = new Test220515A(100);
类的三大特性
封装,继承,多态。
成员访问修饰符(相当于设置权限):可以用来进一步实现封装特性。控制类的成员的可见性。(只要是在类的低一级的都是成员)
public 公有的,可见范围最大。所有位置都可以访问
protected 受保护的 在无修饰符的基础上,增加子类可以访问
无(default) (无修饰符/友好访问修饰符/包修饰符)在private的基础上,增加包内可以访问,类的内部可以访问
private 私有的修饰符,可见性最小。只有类内部可以访问
可见性分成以下几个范围:
1.类外部
2.同一包内
3.子类
4.类内部
this关键字:表示当前对象。
封装的一种体现:将静态的数据通过private设置,然后通过公有的public 方法进行改变。
setter 和 getter方法(快速设置类的静态成员的值):
方法的重载
一.方法的重载override。方法名相同,参数不同:
1.参数个数不一样
2.参数类型不一样
3.参数顺序不一样
二.变量的作用域(生效的空间范围)与生命周期(生效的时间范围)
作用域:从声明的位置开始一直到他所在的大括号结束。
生命周期:从执行到当前变量定义处,一直到其作用域
三.对象与对象之间的关系
1.is a:A is B 继承。
2.has a:A has B 包含,聚合关系,通常作为成员
3.use a:A use B:依赖关系,使用关系,通常作为方法参数
四.基本数据类型和引用类型作为方法参数的区别
基本数据类型作为参数,对参数的改变,并不会影响实参,值传递。
当引用类型作为参数的时候,在方法中,对引用类型的对象更改状态的时候,外部的实参是会变化的。
五.static 和 final 关键字
static:静态的,隶属于类的。静态方法中,如果要访问类的成员的时候,只能使用静态成员。而普通方法中,可以自由的使用静态成员。
类成员:是属于类的,并不隶属于某一个特定的对象。使用类成员的时候,并不需要创建对象。
final:用于定义常量
1.final修饰类成员:表示成员是最终的,常量,不可改变的。final类型的普通成员必须有值,可以初始化,可以通过构造函数赋予值。
2.final可以修饰方法
3.final可以修饰类