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);
}

 

posted @ 2019-07-30 13:49  流氓的夏天  阅读(287)  评论(0编辑  收藏  举报