JAVA 面向对象 (一)

1.什么是类?什么是对象?

1)现实世界是由很多很多对象组成的
基于对象抽出了类
2)对象:真实存在的单个的个体
类:类型/类别,代表一类个体
3)类中可以包含:
1.所有对象所共有的属性/特征————成员变量
2.所有对象所共有的行为——————-方法
4)一个类可以创建多个对象
同一类型所创建的对象,结构相同,数据不同
5)类是对象的模板,对象是类的具体的实例

方法签名:方法名+参数列表

2.方法的重载:

1)发生在同一个类中,方法名相同,参数列表不同,方法体不同
2)编译器在编译时会根据方法的签名自动绑定调用的方法

3.构造方法:构造函数、构造器、构建器

1)给成员变量赋初值
2)与类同名,没有返回值类型
3)在创建(new)对象时被自动调用
4)若自己不写构造方法,则编译器默认一个无参构造方法,
若自己写了构造方法,则不再默认提供
5)构造方法可以重载

4.this:指代当前对象,哪个对象调用方法它指的就是哪个对象

只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
1)this.成员变量名————–访问成员变量
2)this.方法名()—————-调用方法(一般不用)
3)this()———————–调用构造方法
成员变量和局部变量是可以同名的
——用的时候,采取的是就近原则
——此时访问成员变量是不能省略this.的

5.null:空,没有指向任何对象

若引用的值为null,则该引用不能进行任何操作了,
若操作则发生NullPointerException空指针异常

6.引用类型之间画等号:

1)指向同一个对象
2)通过一个引用对象的修改会影响另一个引用的访问
基本类型之间画等号:
1.赋值
2.对一个变量的修改不会影响另一个变量

7.引用类型数组 使用:

1
2
3
4
5
6
7
8
9
10
11
12
1)Student[] stus = new Student[3]; //创建Student数组对象
stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
stus[1] = new Student("lisi",26,"JMS");
stus[2] = new Student("wangwu",27,"SD");
System.out.println(stus[0].name);
stus[1].age = 28;
stus[2].sayHi();
2)Student[] stus = new Student[]{
new Student("zhangsan",25,"LF"),
new Student("lisi",26,"JMS"),
new Student("wangwu",27,"SD")
};

8.继承:

1)作用:代码复用
2)通过extends来实现继承
3)超类:派生类所共有的属性和行为
派生类:派生类所特有的属性和行为
4)派生类继承超类后,派生类具有: 派生类的+超类的
5)一个超类可以有多个派生类
一个派生类只能继承一个超类——单一继承
6)继承具有传递性
7)java规定:构造派生类之前必须先构造超类
在派生类的构造方法中若没有调用超类的构造方法
—则默认super()调用超类的无参构造方法
在派生类的构造方法中若调用了超类的构造方法
—则不再默认提供
super()调用超类构造方法必须位于派生类构造方法的第一行

9.super:指代当前对象的超类对象

super的用法:
1)super.成员变量名———–访问超类的成员变量
2)super.方法名()————-调用超类的方法
3)super()——————–调用超类的构造方法

10.向上造型:

1)超类型的引用指向派生类的对象
2)能点出来什么,看引用的类型

11.方法的重写(Override):重新写、覆盖

1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
2)重写方法被调用时,看对象的类型
3)遵循”两同两小一大”原则:
1.两同:
1)方法名称相同
2)参数列表相同
2.两小:
1.派生类方法的返回值类型小于或等于超类方法的
1)void时,必须相同
2)基本数据类型时,必须相同
3)引用数据类型时,小于或等于
2.派生类方法抛出的异常小于或等于超类方法的———-异常
3.一大:
1)派生类方法的访问权限大于或等于超类方法的

12.重写与重载的区别:

1)重写(Override):
1.发生在父子类中,方法名相同,参数列表相同,方法体不同
1.”运行期绑定”,看对象的类型绑定方法
2)重载(Overload):
1.发生在一个类中,方法名相同,参数列表不同,方法体不同
2.”编译期绑定”,看参数/引用的类型绑定方法