封装、继承、多态

封装是什么?

封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

封装,是把客观对象变成抽象的类的过程,在这个过程中,抽象出具体对象的特征,包装成一个**“黑盒子”**,达到信息隐藏的目的。封装后的类会把重要信息隐藏,把自己的数据和方法只让可信的类或者对象操作。

封装的意义是什么?

封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

封装的意义在于将对象的抽象化,抽象的类内部可以自由进行修改,同时减少耦合,使类相对独立,并能隐藏信息,保护信息安全。

这段代码中,将 nameage 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏:

public class Person {
    private String name;
    private int age;
}

继承是什么?

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

子类的特征

1、子类拥有父类非private的属性和方法。

2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3、子类可以用自己的方式实现父类的方法。

对类进行继承,被继承的类叫做父类,继承的新类叫做子类,子类完全继承父类的属性和方法,并且子类是父类的特殊化,它不仅继承了父类的特征,还会具有自己独有的特征。父类可以完全代替子类,但子类不能代替父类,就像儿子可以继承父亲的财产,但父亲不能继承儿子的财产一样,这个特征被叫作“向上转型”。

继承的代码举例:

父类

public class Animal { 
    private String name;  
    private int id; 
    public Animal(String myName, int myid) { 
        name = myName; 
        id = myid;
    } 
    public void eat(){ 
        System.out.println(name+"正在吃"); 
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "号" + name + "."); 
    } 
}

子类1:

public class Penguin extends Animal { 
    public Penguin(String myName, int myid) { 
        super(myName, myid); 
    } 
}

子类2:

public class Mouse extends Animal { 
    public Mouse(String myName, int myid) { 
        super(myName, myid); 
    } 
}

子类继承了父类非private的属性和方法,让代码更简洁,并提高了代码的复用性,而Java中不能多继承,但是能多重继承,如上述代码,子类1继承父类,子类2继承子类1,不能同时继承一个父类。

多态是什么?

多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。

Java是一个典型的面向对象的编程语言,它属于解释型的语言,由于它只在运行时才逐句进行翻译,所以它引用的变量的类型和该变量调出的类的方法在编程时并不能确定,只能在运行时才能确定,类似于**“薛定谔的猫”,不同的是,这个形态时可以人为引导它“塌陷”**到某一具体的类,这样一来,程序员可以在不修改源代码的情况下,就可以让引用的变量绑定不同的类,从而调用不同的方法,让程序可以选择多个状态,这就是面向对象语言的多态性。

多态如何实现?

Java实现多态有三个必要条件**:继承、重写、向上转型。**

**继承:**在多态中必须存在有继承关系的子类和父类。

**重写:**子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

**向上转型:**在多态中需要将子类的方法赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

在多态中必须存在继承关系,子类和分类必须存在,同时子类对父类会进行重写,形成属于自己的独有特征。并将自己方法传递给分类,做向上转型,在向上转型的过程中,子类会丢失自己独有的方法,向上转型的目的是为了让方法复用。

你可能感兴趣的:(开发语言,网络安全,java,算法,前端)