• 面向对象


    -------- 现实生活中的 ------------
    对象:
    生活中:能够用语言描述出来事物。
    程序中: 分配在堆上面的一块内存区域。

    类: 具有明确的定义的相同特征和行为,功能事物集合
    电风扇类: 相同特征,功能
    -------- 程序中--------------------
    类:把一类生活中具体的事物相同特征,功能/行为抽象为属性和方法过程
    语法:
    注意: Java中的一个类表示生活中的一类对象
    class 类名称 {
      // 类的成员
      // 属性-> 特征的抽象
      // 方法-> 功能/行为的抽象
    }
    // 手机类:
    特征: 颜色,品牌,尺寸。
    功能: 打电话,发短信,聊微信。
    class Phone {
      // 特征->属性(成员变量)
      String color; // 颜色
      String kind; // 品牌
      double size; // 尺寸
      // 方法->功能抽象
      void call() {}
      void sendMs() {}
      void chat() {}
    }

    对象: 分配在堆上面的一块内存区域。
    // 生产手机
    Phone phone = new Phone();
    phone.color = "金黄色";
    phone.kind = "苹果黑";
    phone.size = 15.5
    // 调用提供方法,发送消息。
    phone.call();
    phone.chat();
    phone.sendMs();

    类和对象的关系:
      类是对象的模板
      对象是类的实例

    ------ 面向对象的特征 --------------
    访问修饰符:
            private default protected public
    同一个类      √      √     √     √
    同一个包      ×      √     √     √
    不同包是子类    ×      ×       √      √
    不同包非子类    ×      ×       ×     √

    封装:隐藏对象功能实现的细节。
      1、将类中属性私有化
      2、提供需要给外部类操作的setter或者getter方法
      3、提供外部成员调用方法使用public修饰
    继承:子类继承父类中的成员变量。
      在子类中使用extends关键字就可以继承父类中所有成员变量
      注意: Java中继承只支持单根继承方式
      A extends B,C 多继承(错误)
      A extends B, A extends C (多重继承)

    多态
    抽象
    接口

    package com.oop.demo;
    
    public class Phone {
        private String color;
        private String kind;
        private double size;
        
        public Phone() {
            System.out.println("无参构造函数");
        }
        
        public Phone(int i) {
            System.out.println("有参构造函数");
        }
        
        
        public String getColor() {
            return color;
        }
    
        public void setColor(String color) {
            this.color = color;
        }
    
        public String getKind() {
            return kind;
        }
    
        public void setKind(String kind) {
            this.kind = kind;
        }
    
        public double getSize() {
            return size;
        }
    
        public void setSize(double size) {
            this.size = Math.abs(size);
        }
    
        void call() {
            System.out.println("打电话");
        }
        
        void sendMsg() {
            System.out.println("发短信");
        }
        
        void chat() {
            System.out.println("聊微信");
        }
        
        public static void main(String[] args) {
            Phone phone = new Phone();
            phone.color = "金黄色";
            phone.kind = "苹果黑";
            phone.size = 15.5;
            
            phone.setSize(-15.5);
            
            phone.call();
            phone.sendMsg();
            phone.chat();
            System.out.println(phone.size);
        }
    }
  • 相关阅读:
    反思二
    安装Electron时卡在install.js不动的解决方案
    解决npm 下载速度慢的问题
    覆盖第三方jar包中的某一个类。妙!!
    关于拦截器是用注解方便,还是用配置文件写死方便的总结。
    yapi 启动后,老是自动关闭的问题。
    BaseResponse公共响应类,与我的设计一模一样,靠、ApiResponse
    HashMap 的 7 种遍历方式与性能分析!(强烈推荐)、forEach
    Jackson objectMapper.readValue 方法 详解
    yapi tag的问题,暂时只保留一个tag
  • 原文地址:https://www.cnblogs.com/sunBinary/p/9816869.html
Copyright © 2020-2023  润新知