继承
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。声明一个类继承另一个类,使用extends关键字。
理解:猫和狗都是属于动物,所以猫和狗可以继承于动物;波斯猫和巴厘猫继承自猫,沙皮狗和斑点狗继承自狗。
1. 在java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。
class A{ }
class B{ }
class C extends A,B{ } //C类不可以同时继承A类和B类
2. 多个类可以继承一个父类。
class A{ }
class B extends A{ }
class C extends A{ }
3. 在java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类。
class A{ }
class B extends A{ }
class C extends B{ }
4. 在java中,子类和父类是一种相对概念,也就是说一个类是某个父类的同时,也可以是另一个类的子类。
注意:子类重写父类时,不能使用比父类中被重写的方法更严格的访问权限。父类中的方法是public的,子类的方法就不能是private的。
封装
就是把某些内容封起来,不让别人知道。有些对象自己的属性内部实现细节是不想让其他的对象知晓的,那么我们就可以把它封装起来。
多态
在同一个方法中,由于参数类型不同而导致执行效果各异的现象就是多态。继承是多态得以实现的基础。
在java中,为了实现多态,允许使用一个父类类型的变量来引入一个子类类型的对象,根据被引入子类对象特征的不同,得到不同的运行结果。
理解:要实现一个动物的叫的方法,各种动物的叫声是不同的,可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类的叫声。
Java 重写与重载
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。
重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
1.方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
2.方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
3.方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。