面向对象的特性

面向对象的特性:封装、继承、多态和抽象

抽象类

一个类中没有足够的信息来描述一个对象

抽象类的特性

1、一个类中包含抽象方法,那么这个类肯定是抽象类;

2、子类必须继承父类所有的抽象方法,否则就必须用abstract来声明为抽象类;

3、抽象类不能被实例化;

4、抽象类的抽象方法没有方法体;

 

封装:封装是一种将抽象性函式接口的实现细节部分包装隐藏起来,放置外部类定义的代码访问;

简单来说就是私有的属性,开放的方法;

封装的优点

1、良好的封装能减少耦合;

2、类内部的结构能够自由更改;

3、可以对成员变量进行更加精确的控制;

4、隐藏信息,隐藏实现细节;

继承

继承就是子类继承父类的行为和属性,使得子类具有父类的实例域和方法,或者子类从父类继承方法,使得子类具有父类相同的行为,继承是纵向扩展的;

继承的特性
1、子类拥有父类非private方法、属性
2、子类可以拥有自己的属性和方法,即对父类的扩展
3、子类可以用自己的方式实现父类的方法
4、java不支持多继承,但是支持多重继承

继承的关键字为extends和implements

代码实例:

extends:

class A{

}
class B extends A{

}

implements:

public interface A {
    void test();
}
public class B implements A{
    @Override
    public void test() {

    }
}

 

其中interface声明的是接口,接口是一种完全抽象的类型,是抽象方法的集合,如果说抽象类定义了对象的本质,那么接口只是定义了对象的功能,所以对于抽象类我们只能继承,而对于接口我们是实现;同样的,接口还优化了java不支持多继承的缺点,众所周知,java不支持多继承,但是支持多重继承,而接口则正是弥补了这一缺点,让我们的一个子类可以实现多个接口,但是只能继承一个父类;

代码实例:

多重继承:

class A{
}
class B extends A{
}
class C extends B{
}

多个接口的实现:

public interface A {
    void test();
}
public interface C {
    void testC();
}
public class B implements A,C{
    @Override
    public void test() {

    }

    @Override
    public void testC() {

    }
}

多态

多态就是使同一个行为具有多个不同的表现形式或形态的能力

多态的三个必要条件

继承、重写、父类引用指向子类对象,这三个条件缺一不可

代码实例:

public class A {
    public void test(){
        System.out.println("多态实例");
    };
}

public class B extends A{
    @Override
    public void test() {
        System.out.println("多态实例2");
    }
}

public class C {
    public static void main(String[] args) {
        A a = new B();//向上类型转换
        B b = (B) a;//向下类型转换
        a.test();
        b.test();
    }
}
posted @ 2019-05-25 20:15  凌ぃ寒  阅读(139)  评论(0)    收藏  举报