(35) 方法重载(OverLoad)
方法的重载是指一个类可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
(35-1)两同三不同:
- 两 同:同一个类,同一个方法名。
- 三不同:参数类型不同,参数个数不同,参数顺序不同。
(35-2)只有返回值不同不构成方法的重载。
(35-3)只有形参的名称不同,不构成方法的重载。
(35-4)不仅普通方法可以重载,构造方法也可以重载。
(37) this关键字
- 普通方法中,this总是指向调用该方法的对象。
- 构造方法中,this总是指向正要初始化的对象。
- this不能用于static方法。
this是隐形参数,每个方法都会传递这个参数,this可以理解为对象的地址。
这里写代码片
–
(38)面向对象的三大特征
- 继承
- 封装/隐藏
- 多态
- 为了适应需求的多重变化,使代码变得更加通用
继承
例:
人继承自哺乳动物,哺乳动物继承自动物。
类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。可以提高代码的复用性,extends的意思是“扩展”,子类是对父类的扩展。
子类继承父类,可以得到父类的全部属性和方法(出了父类的构造方法)。java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护,就像我们现实中,如果你有多个父母亲,那是多么一个混乱的世界。多继承,就是为了实现代码的复用型,却引入了复杂性,使得系统类之间的关系混乱。
java中的多继承,可以通过接口来实现。
如果定义一个类是,没有调用extends,则它的父类是java.lang.Object(比如上图中的动物的父类)
不同的叫法:超类、父类、基类、子类、派生类
多继承:一个类可以有多个直接父类。
(直接父类,间接父类)
(39)方法的重写(OverRide)
- 重写指的是在子类中根据需要对从基类中继承来的方法进行重写。
- 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
- 重写方法不能使用比被重写方法更严格的访问权限。
例:
package TestOverRide;
public class Animal {
public void Run() {
System.out.println("奔跑吧,Animal!");
}
public void Eat() {
System.out.println("我在吃饭!");
}
}
class Bird extends Animal {
//对Run()方法的重写
public void Run() {
System.out.println("飞呀飞!");
}
}
package TestOverRide;
public class Test {
public static void main(String[] args) {
Bird bd = new Bird();
bd.Run();
bd.Eat();
}
}
运行结果:
飞呀飞!
我在吃饭!
上述例子中,Bird类中的Run()方法就是对父类Animal类中的Run()方法的重写,如果没有在Bird类中对Run()方法进行重写,运行结果应为奔跑吧,Animal!我在吃饭!
。
(40)Object类
所有类都是Object类的子类,即Object类是所有java类的根基类。如果在类的声明中未适用extends关键字指明其基类,则默认基类为Object类。