美文网首页
Java中的面向对象

Java中的面向对象

作者: iDevOps | 来源:发表于2019-09-21 18:28 被阅读0次

    万物皆对象

    • 类和对象
      类是一组相关属性和行为的合集, 是对一类事物描述,是抽象的、概念上的定义
      对象是实际存在的该类事物的具体体现,因而也称实例(instance)
      类是对象的模板,对象是类的实体
    • 成员变量 vs 局部变量
    成员变量 局部变量
    位置 类中,方法外 方法内
    范围 类中 方法中
    初始化值 无,需先定义赋值再使用
    内存 堆内存 栈内存
    生命周期 随着对象的创建而创建,消失而消失 方法的调用而存在,调用完毕消失
    • 类变量和类方法
      被static修饰的成员变量时,该变量称为类变量
      被static修饰的成员方法时,该变量称为类方法
    public class Person {
    
        //成员变量
        private String name;
        //类变量
        private static Integer age;
    
        /**
         * 成员方法
         */
        public void say(){
            //局部变量
            String name = "";
        }
    
        /**
         * 类方法
         */
        public static void run(){
    
        }
    }
    

    注:

    1. 类方法可以访问类变量和类方法
    2. 类方法不能访问普通成员变量和成员方法,反之,成员方法可以直接访问类变量和类方法
    3. 类方法中,不能使用this
    抽象类
    • 抽象类
    /**
     * 抽象类
     */
    public abstract class Person {
    
    }
    
    • 抽象方法
    public abstract class Person {
        /**
         * 抽象方法
         * 没有方法体的方法, abstract修饰
         */
        abstract void say();
    }
    
    • 抽象类和抽象方法
    1. 含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法
    2. 抽象类存在的意义是用来被继承的,一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类
    3. 用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化
    4. 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现
    5. 抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法
    6. 不能用final 修饰符修饰
    接口

    有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果
    从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
    一个类可以实现多个接口,接口也可以继承其它接口

    • 接口的特点
      用interface来定义。
      接口中的所有成员变量都默认是由public static final修饰的。
      接口中的所有方法都默认是由public abstract修饰的。
      接口没有构造器。
      接口采用多继承机制
    public interface Person {
        void say();
    }
    
    面向对象的三大特征

    封装、继承与多态

    • 封装
      适当的封装可以让代码更容易理解和维护,加强代码的安全性
      final
      可以修饰类,方法,变量
      类: 被修饰的类不能被继承
      方法: 被修饰的方法,不能被重写
      变量:被修饰的变量,不能被重新赋值
      权限修饰符
      public: 公共的
      protected: 受保护的
      default: 默认的
      private: 私有的
    public protected default private
    同一类中
    通一包中
    不同包
    不同包的无关类
    • 继承
      super和this
      super : 代表父类的存储空间标识,可以理解为父类的引用
      this : 当前对象的引用

    • 多态

    public interface test{
        //抽象方法, abstract可以省略,没有方法体,供子类实现使用
        public abstract void method1();
        //默认方法, default修饰,不可省略,供子类调用或者子类重写
        public default void method2(){
    
        }
        //静态方法, static修饰,供接口直接调用
        public static void method3(){
    
        }
        //私有方法, 供接口中的默认方法或者静态方法调用
        private void method4(){
    
        }
        private static void method5(){
        
        }
    }
    

    相关文章

      网友评论

          本文标题:Java中的面向对象

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