java_面向对象_itEighteen

OOP
------------
    object oriented program
    面向对象编程。
    class
    基于过程的。

OOP特征
-------------
    封装
    继承
    多态

OOA
-----------
    oriented object analyze

OOD
-----------
    oriented object design

线性思维:
-------------

main(){
    ...
}

//图纸
class{
}

class:对现实事物软件抽象。
Object:切实存在的个体,实例。

数组
---------
    new 
c = null ;

c == null ?

null

new 

类的成员
------------
    成员变量:对象的成员变量在heap区。
    成员函数.

局部变量在stack中,没有默认的初始化值。

stack
------------------
    runtime

Person p = new Person();
    1.定义p
    2.创建对象(heap,产生地址)
    3.赋值

p = &p ;
NullPointerException.
java没有指针
----------------
    没有显式的指针操作。


class ..{
    //成员变量
    String name ;
    int age ;
    //成员函数
    void run(){
    }
}

Person p = new Person();
p.name
p.age

class Dog{
    name "大黄"
    color "yellow"
    watch(){
    }

    catchMouse(){
    }
}

匿名
-------------
    Dog d1 = new Dog();
    new Dog();
    1.只用一次。
    2.做为参数传递给方法

面向对象的特征
-------------------
    1.封装
    2.继承
    3.多态

private:私有
public :公共

java的栈空间设置
--------------------
    java -x                 //输出java的非标准选项
    java -Xss<size> xxx     //设置stack大小
    java -Xss512k ...       //stack默认大小是1m
    java -Xss256k ..        //1k
    java -Xss256k ..        //1k
    java -Xss128k ..        //1k
    java -Xss64k ..         //1k
    java栈默认是1m,至少是108k,通过
    java -Xss64k ...有错误提示。

java堆空间
--------------
    默认是物理内存的1/8.
    java -Xmx512m -Xmx512m ...      //-Xmx设置堆最大值 , -Xms设置堆初始值。
    java -Xmx4g -Xms4g HeapStackDemo

构造函数
---------------
    Construct
    0.类有默认的构造函数.
        public Xxx(){
        }
    一旦定义了有参数的构造函数,默认的构造函数就会被回收到。
    1.函数和类同名

    2.不需要定义返回类型
    3.没有具体的返回值
    4.作用是初始化对象

类成员
------------
    1.成员变量
    2.成员函数
    3.构造函数
    4.构造代码块(对象创建的过程,就是要先走构造代码块,然后再走构造函数。)
    5.静态代码块
        在类加载过程中调用,而且只调用一次。

这里写图片描述


对象创建过程
----------------
    new Dog();
    1.在内存中分配内存空间。
    2.对成员变量赋默认值。
    3.执行构造代码块或赋值语句,执行顺序从上到下。
    4.构造函数。

这里写图片描述

static成员,跟对象无关,访问的方式是Class.XXX()
this:指向对象自身的引用。可以看做是类中内置的成员变量。
this():一个构造函数调用另外一个构造函数的时候(构造函数的重用),而且必须作为第一条语句。
class ConstructorDemo2 {
    public static void main(String[] args)  {
        Dog d = new Dog("大黄","yellow");
        System.out.println(d.name + "," + d.color);

    }
}

class Dog{
    public String name ;
    public String color ;

    public Dog(String name){
        this.name = name;
    }

    public Dog(String name,String color){
        this(name);
        this.color = color;
        this.name = name;
    }
}

这里写图片描述

javabean
-------------
    bean.
    getter/setter



作业
----------------
    1.构造为什么没有返回值类型声明?
    2.阐述对象创建的过程。
    3.为什么构造代码块可以访问之后定义的成员变量?
    4.静态成员和非静态成员的区别?
    5.如何理解this,什么时候使用this?
    6.构造函数调用其他构造函数的方式?  ——> this()
    7.绘制java stack + heap的运行机制,如何调整堆和栈的空间大小。

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_37243717/article/details/80783913
今日推荐