美文网首页
浅谈java继承、多态、封装

浅谈java继承、多态、封装

作者: 西柚_柠檬 | 来源:发表于2018-08-18 15:22 被阅读0次

    1、继承 ->is a(你是人,苹果是水果,)

    1)语法

    public  class  <子类>  extends  <父类>{

    }

    2)子类使用父类的方法

    3)子类覆盖父类的方法

    父类只定义共性的行为(做什么),如何做(如何吃饭),下沉到子类完成

    4)protected  保护

    介于public 和 private之间

    主要用于继承

    访问修饰符          本类    同一包      子类      外部

    private                  Y          N            N            N

    friendly(默认)        Y          Y            N             N

    protected              Y           Y           Y             N

    public                    Y          Y            Y             Y

    public  可以修饰属性、方法、类

    private 可以修饰属性、方法 

    protected 可以修饰属性、方法 

    friendly(默认)  可以修饰  属性、方法、类

    向上转型 upcasting

    First:返回类型的向上转型

    int num =10;

    long result = num;

    父类的引用指向子类的对象,叫做向上转型。

    tom是对象的一个引用,可以看做Student类型,也可以看做Person类型

    Person tom = new Student();

    Second:参数的向上转型

    main(String args[]){

    int num1 = 10;

    int num2 = 20;

    add(num1,num2);

    }

    public  static void add(long first,long second){

    System.out.println(first+second);

    }

    向上转型有一个支撑点:继承

    好处:工作中去掉很多重复的代码

    只针对父类的编程

    注意:java只支持单继承(子类最多只能有一个父类)

    工作中什么情况下使用继承?

    只有需要向上转型的时候用继承

    2、多态 has a

    什么是多态?

      程序在运行期判断对象类型,调用恰当方法(只有在运行期才知道创建哪个类型的对象)

      特征:1做什么和怎么做分离

      在父类定义做什么,怎么做下沉到子类

      父类只定义共性的行为

      2让不变的事物和变动的事务隔离

        不变的事物:所有的形状都可以绘画

        变化的事物:每一种形状化的方式不一样

        不变的事物抽象为父类,变化的事物下沉到子

        在父类定义的方法,子类重新定义

        多态:运行时判断对象类型,调用恰当的方法

        特征:父类定义做什么,如何做下沉到子类

        针对父类的编程,忽略子类的存在

        每个子类实现的方式不同(圆形和三角形画的方式不一样)

        对象有两种状态,1编译期状态(父类)

    2 运行期状态(子类)

        Java支持向上转型,对象的状态在运行期会进行识别

        支撑点:方法覆盖  & 向上转型 

    3、封装 

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 

    封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 

    要访问该类的代码和数据,必须通过严格的接口控制。 

    封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 

    适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。 

    public class Student {

    /**

    * 学生的名称

    */

    String stuName;

    Student(){

    stuName="Tom";

    }

    /**

    * 学生具有学习行为

    */

    public void study(){

    System.out.println(stuName+"正在学习");

    }

    }

    public class TestStudent {

    public static void main(String[] args) {

    Student tom = new Student();

    tom.study();

    }

    }

    结果:Tom正在学习

    效果实现将name封装隐藏,防止外界直接访问。

    相关文章

      网友评论

          本文标题:浅谈java继承、多态、封装

          本文链接:https://www.haomeiwen.com/subject/qqjfiftx.html