zoukankan      html  css  js  c++  java
  • JavaSE03

    面向对象

    概念

    本质:以类的方式组织代码,以对象的形式封装数据 抽象

    三大特性:封装、继承、多态

    一个类里只能有一个 public class,但可以有多个 class

    创建与初始化对象

    使用 new 关键字创建对象,除了分配内存空间,还会给创建好的对象进行默认初始化,以及对类中构造器的调用

    构造器

    类中的构造器也称为构造方法,具有两个特点:

    • 必须和类的名字相同
    • 必须没有返回类型,也不能写 viod
    //查看 class 文件,自动生成的
    package com.oop.demo02;
    
    public class Person {
        public Person() {
        }
    }
    
    //我们也可以显式生成
    String name;
    
    //无参构造 实例化 初始值
    //1.使用 new 关键字,必须要有构造器
    public Person(){
        this.name = "John";
    }
    
    //2.有参构造
    //一但定义了有参构造,无参构造必须显式定义!否则会被覆盖只留下有参构造
    //无参构造为空即可
    public Person(){
    }
    
    public Person(String name){
        this.name = name;
    }
    
    //new 的时候,如果有参数就走有参构造;没有参数则走无参构造(方法重载)
    

    生成构造器的快捷键:alt + insert -- 选择Constructor

    封装

    该露的露,该藏的藏(内部数据操作细节自己完成,不允许外部干涉。仅暴露少量的方法给外部使用)

    记住这句话:属性私有,get / set

    封装主要用于属性,一般不用于方法

    package com.oop.demo04;
    
    //类  private:私有
    public class Student {
    
        //属性私有
        private String name; //名字
        private int id; //学号
        private char sex; //性别
    
        //但是可以提供一些可以操作这个属性的方法
        //获得name属性的方法
        public String getName() {
            return name;
        }
    
        //设置name属性的方法
        public void setName(String name) {
            this.name = name;
        }
    }
    
    package com.oop.demo04;
    
    public class Application {
        public static void main(String[] args) {
            Student s1 = new Student();
            //属性私有,不可获取和修改!
            //s1.name = "";
    
            //使用 get、set 方法操作私有属性
            s1.setName("joy");
            System.out.println(s1.getName());
        }
    }
    

    生成 get / set 方法的快捷键:alt + insert -- 选择

    封装的作用:

    • 校验用户输入的值(限制用户的操作)
    • 提高程序的安全性,保护数据
    • 隐藏代码的实现细节
    • 统一接口
    • 增加系统可维护性

    继承

    继承的本质是一批类的抽象。继承是类和类之间的一种关系(除继承外,还有依赖、组合、聚合等)

    Java 中类只有单继承,没有多继承

    修饰符优先级:public > protected > default > private

    查看继承顺序快捷键:ctrl + h

    super

    this.属性/方法
    super.属性/方法  -->  父类的
    //私有的 super也继承不了
    //当 new 一个对象时,默认先执行要new的类的父类的构造器(隐藏代码:super()),然后再执行该类的构造器
    

    super 注意点:

    • 代表父类对象
    • super 调用父类的构造方法,必须在构造方法的第一个
    • super 必须只能在子类 或 构造方法中
    • super 和 this 不能同时调用构造方法!
    • 只能在继承条件下才可以使用

    this 注意点:

    • this 代表调用者这个对象
    • 没有继承也能使用

    方法重写

    由此可见 静态方法和非静态方法区别很大
    静态方法:方法的调用只看左边定义的类型
    非静态方法:才可以重写!public!
    重写的方法左边有个小箭头!
    
    小结:
    重写的前提:继承,重写的是方法而不是属性
    1.方法名必须相同
    2.参数列表必须相同!
    3.修饰符:范围可扩大 (public > protected > default > private)
    private 的方法不可重写!
    4.重写抛出的异常:范围可以缩小,但不能扩大!
    
    为什么需要重写?
    1.父类的功能,子类不一定需要或者不满足使用要求。
    alt + insert :选择 override
    
  • 相关阅读:
    【转载】Dom篇
    【转载】Eclipse自动编译问题
    RabbitMQ
    分布式消息中间件
    分布式限流算法
    分布式限流和熔断
    数据库中间件
    redis 集群原理
    redis 哨兵模式(读写分离)
    redis 和memcache 区别
  • 原文地址:https://www.cnblogs.com/straightup/p/14503452.html
Copyright © 2011-2022 走看看