java 将3变为03,java基础知识03

一:面向对象

1、  名词提炼法:人开门

三个特征:封装、继承、多态

以后开发:其实就是找对象使用,没有对象,就创建对象。 其实就是找对象、建立对象、使用对象、维护对象的关系

2、  类和对象的关系

类:对现实生活中事物的描述

对象:就是这类事物,实实在在存在的个体

例如需求:描述汽车(颜色、轮胎数),描述事物其实就是在描述事物的属性和行为

属性对应的是类中的变量,行为对应的是类中的函数(方法)

其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)

0818b9ca8b590ca3270a3433284dd417.png

3、匿名对象:           new Car().color = “blue”;

匿名对象 调用属性没有意义(立马成为垃圾),调用方法有意义。

//匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化,如果对一个对象进行多个成员调用,必须给这个对象

起个名字

//匿名对象使用方式二:可以将匿名对象作为实际参数进行传递

4、封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

封装原则:

1.将不需要对外提供的内容都隐藏起来

2.把属性都隐藏,提供公共方法对其访问

private:私有、权限修饰符,用于修饰类中的成员(成员变量、成员函数),私有只在本类中有效

注意:私有仅仅是封装的一种表现形式

之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码健壮性

5、构造函数

特点: 1、函数名与类名相同            2、不用定义返回值类型                   3、不可以写return语句

作用:可以给对象进行初始化。

对象一建立就会调用与之对应的构造函数

当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数,当在类中自定义了构造函数后,则系统不再加

构造函数与一般方法的区别:

构造函数时在对象一建立就运行,给对象初始化

而一般方法是对象调用才执行,给对象添加对象具备的功能

一个对象建立,构造函数只运行一次

而一个方法可以被对象调用多次

什么时候定义构造函数呢?

当分析事物时,该事物具备一些特性或者行为,那么将这些内容定义在构造函数中。

6、this代表本类的对象

this代表它所在函数所属对象的引用

构造函数件的调用只能用this语句,并且this语句只能放在构造函数的第一行

Person(String  name)

{

this.name = name;

}

Person(String  name,int   age)

{

this(name);           // this语句,this.name = name;

this.age = age;

}

7、static  静态关键字

用法:是一个修饰符,用于修饰成员(成员变量、成员函数)

当成员被静态修饰后,就多了一个调用方式,出了可以被对象调用外,还可以直接被类名调用。  类名.静态成员

static特点:1、随着类的加载而加载   2、优先于对象存在         3、被所有对象所共享         4、可以直接被类名所调用   5、存在于方法区中

静态使用注意事项:

1、静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态

2、静态方法中不能定义this、super关键字,因为静态优先于对象存在

静态的应用:每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用

8、摘出类中的文档注释(/**            */):                        在命令行下输入       javadoc      —d      myhelp       -author      -version            ArrayTool.java

如果一个雷需要提供help文档,需要public  class  ArrayTool

9、静态代码块

10、Person p = new  Person(“zhangsan”,20);

分析这句话都做了什么事情:

1、因为new用到了Person.class,所以会找到Person.class文件并加载到内存中

2、执行该类中的static代码块,如果有的话,用来给Person.class类进行初始化

3、在堆内存中开辟空间,分配内存地址

4、在堆内存中建立对象的特有属性,并进行默认初始化

5、对属性进行显示初始化

6、对对象进行构造代码块初始化

7、对对象进行相应的构造函数初始化

8、将内存地址赋给栈内存中的p变量

11、设计模式:解决某一类问题最行之有效的方法,java中有23中设计模式

单例设计模式:解决一个类在内存只存在一个对象

想要保证对象唯一:

1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象

2、还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象

3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

这三步怎么用代码体现呢?

1、将构造函数私有化

2、在类中创建一个本类对象

3、提供一个方法可以获取到该对象

0818b9ca8b590ca3270a3433284dd417.png

对于事物该怎么描述还怎么描述,当需要将该事物的对象保证在内存中唯一是,就将以上3步加上即可。

12、继承  extends

1、提高代码复用性

2、让类与类之间产生了关系,有了这个关系,才有了多态的特性

聚集:聚合和组合

变量:如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this,子类要访问父类中的同名变量用super

0818b9ca8b590ca3270a3433284dd417.png

子父类中的函数:

当子类出现和父类一模一样的函数时,当子类对象调用该函数时,会运行子类函数的内容,如果父类的函数被覆盖一样,这种情况是函数的另一个特性:重写                                (覆盖)

子类重写父类:必须保证子类权限大于等于父类权限,才可以重写,否则编译失败

静态只能重写静态(了解)

子父类中的构造函数:

在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句super();这个语句会访问父类中空参数的                                 构造函数,而且子类中所有的构造函数默认第一行都是super();

为什么子类一定要访问父类中的构造函数:

因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。所以子类在对象初始化时,要先访                                                 问一下父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

注意:super语句一定要定义在子类构造函数的第一行。

this()和super()在构造函数中只能有其一。

13、final关键字:最终,作为一个修饰符

1、可以修饰类、函数、变量

2、被final修饰的类不可以被继承,为了避免被继承,被子类重写功能

3、被final修饰的方法不可以被重写

4、被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量

当在描述事物时,有些数据的出现值是固定的,那么这时为了增强阅读性,都会给这些值取个名字,但这个值不需要改变,所以加final修饰。

作为常量:常量的书写规范所有字母都大写

例 final   double        PI  =  3.14;

5、内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

14、抽象类:abstract 关键字。当多个类中出现相同功能,但是功能主题不同,这时可以进行向上抽取。这时只抽取功能定义,而不抽取功能主体。

抽象类的特点:

1、抽象方法一定在抽象类中

2、抽象方法和抽象类都必须被abstract关键字修饰

3、抽象类不可以用new创建对象,因为调用抽象方法没意义。

4、抽象中的方法要被使用,必须由子类重写所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

//需求 : 获取一段程序运行的时间

// 原理 :获取程序开始和结束的时间并相减即可         获取时间:System.currentTimeMillis();

0818b9ca8b590ca3270a3433284dd417.png

当代码完成优化后,就可以解决这类问题,这种方式,称为模版方法设计模式。在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分                         在使用不确定的部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值