Java中面向对象的三大特征:
继承性(Inheritance)
多态性(Polymorphism)
封装性(Encapsulation)
继承
多个类具有相同属性(成员变量)或者行为(成员方法)时候,将这些抽取出来定义到一个公共的类中,其他各类可以继承此公共类,从而不用每个类中重复定义公共部分,这个公共部分就是父类(也称超类或者基类),其他类称为子类。
继承特点,优点:
1):Java只存在单个继承不存在多个继承,可以多层继承,多重继承即:一个类只能有一个父类。
2):父类具备的方法子类可直接继承过来,不用重新书写,提高了代码的复用性
3):让类与类之间产生了关系,有了关系才有了多态的实现。
封装
封装是指隐藏(保护)对象属性,仅提供特定对外访问方式(get/set…方法),让类外部可以访问到隐藏的对象属性。通过关键字private实现。
多态
允许不同类型的子对象对统一消息做出不同的响应,利用多态可以使程序具有良好的扩展性,可以对所有的类对象进行通用处理。利用多态性,具有同样方法名和方法特征的方法根据调用方法的对象的类型,可以产生不同的动作
多态的体现
1:方法重写和重载
2:对象的多态性
3:父类引用指向子类对象
要了解多态我们首先需要来看向上/向下转型
向上转型(程序自动完成)
父类 父类对象=子类 子类对象
向下转型(强制类型转型)
子类 子类对象=(子类)父类实例
我们来看一段代码
class A{
public void tell1(){
System.out.println("A--tell1");
}
public void tell2(){
System.out.println("A--tell2");
}
}
class B extends A{
public void tell1(){
System.out.println("B--tell1");
}
public void tell3(){
System.out.println("B--tell3");
}
}
public class dogi {
public static void main(String[] args) {
A a=new B();
a.tell1();
}
}
输出结果为:
当我们用向下转型:
public static void main(String[] args) {
//向上转型
B b=new B();
A a=new A();
a=b;
//向下转型
b=(B) a;
b.tell1();
}
我们看到输出是都是B类的tell1,这个地方子类重写父类方法,向上转型子类对象赋值给父类对象,向下转型父类赋值给子类实例(这里注意要发生向下转型必须先发生向上转型),调用父类因为在子类重写父类方法,调用的的是子类方法,所以我们知道当子类重写父类方法当子类,这里体现了多态。
/
/
/
希望看到我文章朋友,如果发现有什么不足之处,能够不吝赐教,多多指点,我一定洗耳恭听。