zoukankan      html  css  js  c++  java
  • java面向对象白话解说

    面向对象的程序设计:

    1.什么事面向过程的程序设计,面向过程的程序设计注重程序执行的流程和顺序,典型的是C语言。

    2.面向对象的程序设计,设计者变成了调用者,找到了对象就找到了对象的功能,用来解决一些复杂分业务和大型的应用,典型的面型对象程序语言,典型的像java、C++、C#

    对象是一个具体的实体,类是一个抽象的概念,类是多个具有相同属性和形为的对象抽取出来的。定义类的过程是一个抽象的过程。

    变量的作用域:

    1.变量定义的位置决定了该变量的可见度,在类中定义的变量通常叫做成员变量

    成员变量和局部变量:

    1.  变量定义的位置决定了该变量的可见度,在类中定义的变量,通常是成
    员变量,这些变量可以被类中所有的方法访问,甚至可以被其它类的方法访
    问。在方法内定义的变量,是局部变量,它的可见度是局部于定义它的方法的,
    所以只能在定义它的方法内访问。
    2.  成员变量在堆中分配置存储空间,而局部变量在方法调用的栈区中分配
    置存储空间,成员变量会自动被初始化为和数据类型相关的一个初值,而局
    部变量不会进行自动进行初始化,所以必须要先定义,再赋值,再使用。
    3.  成员变量和局部变量的生命周期不一样,成员变量在对象回收时才会释
    放存储空间,而局部变量在方法调用结束就释放存储空间。
    

    构造方法:

    与类同名且没有任何的返回值,就连void也没有。构造方法是在实例化类的对象时通过new关键字调用的。当类中没有显式的定义任何构造方法时,jvm会为这个类创建一个默认的无参数的无法。如果自定义了构造方法,则jvm不再分配置默无参数构造方法。 构造方法中一般会写创建对象时就要执行的内容。 构造方法也可以被重载。 一般,如果自定义了带参的构造方法,最好再定义一个无参构造。

    this关键字的使用:

    在一个类中所有成员变量和成员方法,访问时需要通过对象来访问,这个对象的表示方法就是this,指代类的一个虚拟对象。

    this();表示构造方法的调用,只能在构造方法中调用,只能在第一行

    构造代码块:

    在构造方法之前执行的代码块,放在所有方法之外

    {
    方法或语句
    }
    

    局部代码块是在方法内定义的,只能在方法内使用

    局部代码块可以加速内存空间的回收,可以提高内存空间的利用率

    匿名对象:

    面向对象的三大特征:

    1.封装 2.继承 3.多态

    封装 :

    广义角度的封装:类的定义的过程,就是一个封装的过程
    
    狭义上的封装: 是指属性私有化,并对这些私有化的属性对外提供公有地访问方法
    

    private 私有的

    封装的好处,可以让用用户按照设计者设计方式来访问数据,能够隐藏事物的实现细节,降低使用的难度,保证数据的完整和有效

    封装代码实现,私有化成员变量,提供共有的setter方法,供用户写入数据,提供的getter方法,供用户读取数据

    继承

    子类不断向上抽取的结果,继承可以减少重复的代码,实现代码的重用。继承要符合is---a原则

    继承的单根性和传递性 单根性:

    在设计阶段,先通过子类去得到父类,在编码阶段先定义父类在派生子类,父类也成为基类,子类也叫派生类。一个父类可以派生多个子类,但是在java中一个子类只能有直接的一个父类,java不支持多继承。

    传递性:

    java中类可以派生子类,子类又可以派生子类,类的继承是可以传递的

    多继承:

    一个类可以有多个直接的父类,C++支持多继承。

    java中的访问修饰符:

    1.  private 在类中被private修饰的成员只能在本类中可见。
    2.  public修饰的成员,本类可见,子类可见,同包类可见,不同包类可见。
    3.  默认的访问修饰 本类及同包类可见,不同包类不可见。
    4.  protected 修饰的成功本类及子类可见,不同包中的非子类不可见。
    

    方法的重写:在继承关系中,如果子类具有和父类相同签名的方法,方法的返回值类型和方法名都相同,,子类方法对父类方法进行了重写,重写的关键字是@override

    重写的原则:

    1.  方法的签名必须相同
    2.  如果父类返回值类型是基本数据类型/void,则子类返回值类型必须和父类返回值类型完全一致。
    3.  子类方法的访问修饰符要大于等于父类方法的访问修饰符级别
    4.  父类方法的返回值类型如果是引用类型,子类方法的返回值类型可以是引用类型的子类或引用类型本身。
    

    super关键字 指父类的对象的引用,是父类的一个虚拟对象。

    super()调用父类的无参构造方=,在一个类中,所有的构造方法中的第一行都会默认调用类的无参构造方法,这时如果父类没有提供默认的无参构造,当前类的定义就会出现错误,解决办法有两种:

    1.在父类中定义一个无参构造方法    
    2.在藻类的构造方法中显式的调用父类的带参构造方法
    

    在继承关系下,当创建子类对象的时候,想创建父类对象,在创建子类对象

    多态

    什么是多态?事物在不同场合表现出不同的形态,称为多态。

    实现多态的方法:

    1.方法的重载
    public class Actor{
        public void play(剧本);
        public void play(唱歌);
        public void play(弹琴);
    }
    方法重载实现多态不利于维护,面向对象开发原则开闭原则,对增加代码是开放的,对修改代码是封闭的
    
    2.方法的重写
    
    public class Pet {
        public void eat() {
            System.out.println("宠物吃饭......");
        }
    }
    
    public class Cat extends Pet{
        @Override
        public void eat() {
            System.out.println("小猫吃鱼......");
        }
    }
    
    public class Dog extends Pet{
        @Override
        public void eat() {
            System.out.println("小狗吃肉......");
        }
    }
    
    public class Master {   
        public void feed(Pet pet) {
            pet.eat();
        }
    }
    
    public static void main(String[] args) {
        Cat cat=new Cat();
        Dog dog=new Dog();
        Rabbit rabbit=new Rabbit();
    
        Master master=new Master();
        master.feed(rabbit);
    }
    
  • 相关阅读:
    C#2.0泛型学习--入门篇
    [转自MSDN]如何映射 HRESULT 和异常
    js创建hashtable
    滑雪在日本 之 新泻篇 3
    就算神游 之四:富士山和富士游乐园 2
    就算神游 之四:富士山和富士游乐园 9
    滑雪在日本 之 新泻篇 9
    滑雪在日本 之 新泻篇 14
    就算神游 之四:富士山和富士游乐园 4
    挤地铁的感悟
  • 原文地址:https://www.cnblogs.com/mxybk/p/11269577.html
Copyright © 2011-2022 走看看