zoukankan      html  css  js  c++  java
  • 封装、多态、对象的转型

    程序设计的要求:“高内聚、低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。

    封装

    编程中封装的具体优点:

    1.提高代码的安全性 2.提高代码的复用性 3.“高内聚”:封装细节,便于修改内部代码,提高可维护性。 4.“低耦合”:简化外部调用,便于调用者使用,便与扩展和协作。

    java是通过“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露。java四种“访问控制符”分别是private、protected、public、default,说明了面向对象的封装性,所以利用他们尽可能把访问权限降到最低。

    1.private表示私有,只有自己类能访问

    2.default表示没有修饰符修饰,只有一个包的类能访问

    3.protected:表示可以被一个包的类及其他包中的子类访问

    4.public表示可以被该项目中的所有包的所以类访问

    封装的使用细节

    类的属性处理:1.一般使用private访问权限

                            2.提供相应的get/set方法来访问相关属性,这些方法都是public修饰的,以提供对属性的赋值和读写操作。(boolean变量的get方法是is开头)

    测试:(普通方法一般都写public ,如sayHello方法)

     多态:指的是同一个方法调用,由于对象不同可能会有不同的行为。

    要点:1.多态是方法的多态,不是属性的多态。

    2.多态存在的三个必要条件:继承、方法重写、父类引用指向子类对象

    3.父类引用子类对象后,用该父类调用子类重写的方法,此时多态就出现了

    public class TestPolym {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Animal a=new Animal();
            animalCry(a);
            //a.shout();
            animalCry(new Dog());
            animalCry(new Cat());
        }
        static void animalCry(Animal a){ //用父类调用子类的方法,传的对象不一样,调用的方法也不一样
            a.shout();
        }
        /*如果没有多态
         * 需要大量的重载方法
         * static void animalCry(Dog d) //狗的叫
           d.shout();
           static void animalCry(Cat d) //猫的叫
           d.shout();
         * 
         * */
    }
    class Animal{
        public void shout(){
            System.out.println("叫了一声!");
        }
    }
    class Dog extends Animal{
        public void shout(){
            System.out.println("汪汪汪!");
        }
    }
    class Cat extends Animal{
        public void shout(){
            System.out.println("喵喵喵!");
        }
    }

     (当代码过长一个页面截取不了时,会复制代码)

    对象的转型:

    父类引用指向子类对象,称为向上转型,属于自动类型转换

    向上转型的父类引用变量只能调用它编译的方法,不能调用它运行类型的方法;我们需要对类型进行强制转换,称为向下转型

    编译通过,运行错误的情况,同类之间不能转型:

  • 相关阅读:
    IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
    微软中国的相关研发团队 交流平台
    Excel文件减肥和加速
    二进制与字符串之间的转换
    调度模式·WorkerChannelRequest
    引用Hibernate的Java桌面程序打包方法
    [收藏]Open CASCADE
    需要天天读月月读年年读的书
    geotools的dotnet版本
    FC4 下ns2.28的安装 (zz)
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/11344341.html
Copyright © 2011-2022 走看看