zoukankan      html  css  js  c++  java
  • 7、java封装、继承、聚合组合

    1封装:封装的是属性,封:private  装:set、get‘

        可以看做将属性和get/set方法捆绑的过程。

        优点:1、防止对封装数据的未经授权的访问,提高安全性。使用者只能通过事先预定好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

           2、有利于保证数据的完整性

           3、便于修改,增加代码的可维护性。

           4、隐藏一个类的实现细节。

    2、强内聚弱耦合:一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他一切内容。我们在进行程序的详细设计时,尽量避免一个模块直接修改或操作另一个模块的数据。

      强内聚:让一个类功能尽量强大

      弱耦合:如果多个类通信,尽量单线联系。

    3、继承

       子承父(非私有)属性、方法,不继承构造器,实现对类的复用;

        所有的类的最根源的父类是Object。

       Object类下的通用方法(所有类都有这些方法):Clone克隆:创建一个和自己一样的对象,但是堆不同

                  toString:变成字符串

                  finalize:垃圾回收使用,他是最后一道防线轮询堆地址是否有栈在调用。      

                  wait:让当前线程等候

                  notify:唤醒被等待的线程

                  getClass:得到当前对象的运行时类

                  hashCode:这是当前对象的hash码。让当前对象唯一,便于查找。

                  notifyAll:唤醒全部线程。

                  equals:判断堆的值是否相等。

    java中继承为单继承。

        

    4、组合和聚合(为了不使用继承,组合聚合复合原则)

    组合(composite) :如果想复用一个类,除了继承以外,还可以把该类当做另一个类的组成部分,从而允许新类直接复用该类的public方法,不管是继承还是组合,都允许在新类中直接复用旧类的方法

        组合是直接把旧类对象作为新类的属性嵌入,用以实现新类的功能,通常需要在新类里使用private修饰符嵌入该类对象。 

    在构造器中实现对该对象成员变量的实例化。

    package com.zxc.G;
    
    /**
     * Created by Administrator on 2018/2/1 0001.
     */
    public class Person {//composite
        private Hand lhand;
        private Hand rhand;
        Person(){
            lhand=new Hand("左手");
            rhand=new Hand("右手");
        }
    
        public static void main(String[] args) {
            System.out.println(new Person().lhand.getName());
            System.out.println(new Person().rhand.getName());
        }
    }
    class Hand{
        private String name;
        Hand(String name){
            this.name=name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

     

    聚合(aggregation):在set中实现对该对象成员变量的实例化

    package com.zxc.G;
    
    /**
     * Created by Administrator on 2018/2/1 0001.
     */
    public class Human {
        private Cat cat;
    
        public Cat getCat() {
            return cat;
        }
    
        public void setCat(Cat cat) {
            this.cat = cat;
        }
    
        public static void main(String[] args) {
            Human h=new Human();
            Cat c=new Cat();
            c.setColor("花猫");
            h.setCat(c);
            System.out.println(h.getCat().getColor());
    
        }
    }
    class Cat{
        private String color;
    
        public String getColor() {
            return color;
        }
    
        public void setColor(String color) {
            this.color = color;
        }
    }

    组合和聚合的区别:

       

  • 相关阅读:
    Iphone开发-NSdata 与 NSString,Byte数组,UIImage 的相互转换
    Iphone访问WCF服务 之 ASIHTTPRequest
    TP6 实现上传文件
    页面自适应纯CSS,使用rem单位
    jQuery解决高度统一问题
    dedecms Ajax异步获取文章列表
    手机端页面自适应解决方案—rem布局
    mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
    修改PHP 上传文件大小限制
    WampServer下修改和重置MySQL密码
  • 原文地址:https://www.cnblogs.com/television/p/8399944.html
Copyright © 2011-2022 走看看