第二周:面向对象部分内容总结(1)---面向对象三大特性
面向对象
1、封装
1、构造方法
1、构造方法的方法名和类名相同
2、当我们没有自定义构造方法,系统会自动产生一个无参数的,什么都不做的构造方法。
3、当我们自定义构造方法后,系统的默认构造方法不会自动产生,必须手动加上。
4、构造方法的作用就是完成对象的初始化操作。
5、构造方法也可以重载(overload)
6、构造方法在new对象的时候自动调用。
7、如果在本类中的构造方法需要互相调用时,使用this()进行调用,但是需要注意留有一个出口,防止递归调用。
8、通过this()调用构造方法时,必须放在构造方法的第一行。
2、 方法重载(OverLoad)
1、在同类中。
2、方法名一样
3、参列表不同(参数的个数或者参数的数据类型)。
4、与返回值无关
3、static关键字(重点)
Static可以修饰变量,这个变量称为静态变量、也称为类变量。
Static也可以修饰方法,被static修饰的方法,称为静态方法或者类方法
类方法调用:类名.静态方法名();
Static可以修饰代码块,被static修饰的代码块称为静态代码块,静态代码块只执行一次。
静态的只能调用静态的。非静态的可以调用静态的。
4、封装
封装就是隐藏内部细节,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
方法是对代码的封装。类是对属性和方法的封装。
2、继承
1、继承的好处:
1.可以提高代码的复用性(重复使用)
2.继承使类与类之间产生了关系,是多态的前提
特点:
1、在java中,继承具备单根性。说白就是一个类只能有一个直接父类。
2、继承具备传递性,它可以多个间接子类。
3、在java中,java.lang.Object是所有类的父类。
4、在创建子类时,会默认调用父类的无参构造方法。然后再调用子类的构造方法。
父类不能被继承的成员:
1、private修饰的属性
2、子类与父类不同包,权限修饰符用默认的成员
3、构造方法
2、super关键字(重点)
1、Super可以访问父类继承过来的属性和方法:super.属性、super.方法()
2、Super()可以用调用父类的构造方法,但是必须放在构造方法的第一行。
3、Super在调用父类构造方法时,与this调用构造方法时不能共存。
3、继承关系下的执行顺序(重点)
父类静态代码块初始化
子类静态代码块初始化
父类属性初始化
父类的代码块执行了
父类构造方法执行了
子类属性初始化
子类的代码块执行了
子类构造方法执行了
总结: 如果有静态的就先执行父类的静态,后执行子类的静态,
静态执行完,先执行父类里的变量初始化操作,然后代码块,最后构造方法。
然后再到子类,顺序同父类。
4、方法重写
1、方法名相同
2、参数列表相同
3、返回值类型相同或者是其子类;
4、访问权限不能严于父类
5、重写方法不能使用比被重写方法抛出更多的异常
5、abstract关键字
1、abstract可以修饰一个类,被abstract修饰的类称为抽象类,抽象类不能实例化。
2、abstract修饰的方法称为抽象方法,抽象方法没有方法体。
3、如果一个类中有抽象方法,则这个必须定义为抽象类。
4、如果一个子类继承了某个抽象类,则这个子类必须重写抽象类中的所有的抽象方法,除非这个子类也是抽象类。
5、抽象类中可以没有抽象方法
6、final关键字(重点)
final可以修饰类、方法、变量。
1、被final修饰的变量称为常量,常量不可以修改
2、被final修饰的基本数据类型不能改变值
3、被final修饰的引用数据类型地址不能被重新指向。
4、被final修饰的方法不能被重写。
5、被final修饰的类不能被继承。
在jdk中,常用final修饰的类有:
1、java.lang.String
2、java.lang.StringBuffer
3、java.lang.Integer
4、java.lang.System
5、java.lang.Class等。。。。。
3、多态
1、多态的好处:
提高代码的可扩展性
2、什么是多态?
生活中:多态实际上就是同一种事物的不同形态。
在程序中指的就是:同一个引用类型,使用不同的实例而执行不同操作。
3、多态实现条件:
1、继承关系下
2、方法重写
3、父类引用指向子类对象:
1、将父类作为方法的参数。
2、 将父类作为方法的返回值。
2、 类型转换(重点)
向上转型: Fu f = new Zi();
向下转型: Zi z = (Zi)f; //要求该f必须是能够转换为Zi的。
向下转型注意事项
-
-
向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,它得先向上转型)
-
向下转型只能转型为本类对象(猫是不能变成狗的)。
-
instanceof关键字:
(对象 instanceof 类) 返回boolean类型的值。
instanceof 在使用时,对象所在类和后面的类型要在同一颗继承树上,否则会编译报错。

浙公网安备 33010602011771号