黑马程序员——Java面向对象

——- android培训java培训、期待与您交流! ———-

1、面向对象是基于面向过程的编程思想。
面向过程:强调的是每一个功能的步骤。
面向对象:强调的是对象,然后由对象去调用功能。

2、面向对象的思想特点
A:是一种更符合我们思想习惯的思想
B:可以将复杂的事情简单化
C:将我们从执行者变成了指挥者
举例:买电脑
面向过程:我要了解电脑–了解我自己的需求–找对应的参数信息–去中关村买电脑–讨价还价–买回电脑
面向对象:我知道我要买电脑–找个懂行的去帮我买–帮我买回来了。

3、开发,设计,特征
开发:就是不断的创建对象,使用对象,指挥对象做事情。
设计:其实就是在管理和维护对象之间的关系。
特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)

4、类与对象
java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。
对象即是该类事物实实在在存在的个体。
定义类其实就是定义类的成员(成员变量和成员方法)
属性:对应类中的成员变量。
行为:对应类中的成员函数。
使用类的内容
a:创建对象 格式
类名 对象名 = new 类名();
b:如何使用成员变量和成员方法
对象名.成员变量
对象名.成员方法()

类作为形式参数的问题
如果看到一个方法需要的参数是一个类名,就应该知道这里实际需要的是一个具体的对象。

5、成员变量和局部变量的区别
(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上
(2)在内存中的位置不同
成员变量:在堆中
局部变量:在栈中
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用.
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

6、匿名对象
匿名对象是对象的简化形式。
匿名对象两种使用情况:
(1)当对对象方法仅进行一次调用时;
(2)匿名对象可以作为实际参数进行传递。

7、Java中的参数传递问题:
在java中,方法参数的传递永远都是传值,而这个值,对于基本数据类型,值就是你赋给变量的那个值。而对于引用数据类型,这个值是对象的引用,而不是这个对象本身。因此,
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。

8、封装
(1)隐藏实现细节,提供公共的访问方式
(2)好处:
A:将变化隔离
B:便于使用
C:提高代码的复用性
D:提高代码的安全性
(3)设计原则
把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式.如getXxx、setXxx
(4)private仅仅是封装的一种体现。
封装:类,方法,private修饰成员变量

9、private关键字
(1)私有的意义,可以修饰成员变量和成员方法
(2)特点:
被private修饰的后的成员只能在本类中被访问
(3)private的应用场景之一:
把成员变量给private了,提供对应的getXxx()/setXxx()方法,提高对数据访问的安全性。

10、this关键字
(1)代表当前类的引用对象
记住:哪个对象调用方法,该方法内部的this就代表那个对象
(2)this的应用场景:
A:解决了局部变量隐藏成员变量的问题
B:当在函数内需要用到调用该函数的对象时,就用this。
C:this 还可以用于构造函数间的调用。

调用格式:this(实际参数);
        this对象后面跟上.调用的是成员属性和成员方法(一般方法);
        this对象后面跟上()调用的是本类中的对应参数的构造函数。

注意事项:通过this在构造函数中调用其他构造函数的时候,只能定义在构造函数的第一行,因为初始化动作要先执行,否则就会报错。

11、构造方法
(1)作用:用于对对象的数据进行初始化
(2)格式:
A:方法名和类名相同
B:没有返回值类型,连void都不能有
C:没有返回值
构造方法中也可以有return语句:return;
其实,在任何的void类型的方法的最后你都可以写上:return;
(3)构造方法的注意事项
A:如果我们没写构造方法,系统将提供一个默认的无参构造方法
B:如果我们给出了构造方法,系统将不再提供默认构造方法
如果这个时候,我们要使用无参构造方法,就必须自己给出。
推荐:永远手动自己给出无参构造方法。
(4)给成员变量赋值的方式
A:setXxx()
B:带参构造方法

12、static关键字
1)静态的意思。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先与对象存在
C:被类的所有对象共享
这其实也是判断该不该使用静态的依据。
D:可以通过类名调用
既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
(3)静态的内存图
静态的内容在方法区的静态区
(4)静态变量和成员变量的区别
A:所属不同
静态变量:属于类,类变量
成员变量:属于对象,对象变量,实例变量
B:内存位置不同
静态变量:方法区的静态区
成员变量:堆内存
C:生命周期不同
静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量:可以通过对象名调用,也可以通过类名调用
成员变量:只能通过对象名调用
所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
注意事项
A:在静态方法中不可以写this,super关键字
B:静态只能访问静态,原因是静态方法和变量存在的时候,对象还不存在,非静态变量也不存在,肯定无法访问。
C:主函数是静态的,其特殊之处:
(1)格式是固定的。
(2)被jvm所识别和调用。
D:静态的生命周期很长。

13、代码块
(1)用{}括起来的代码。
(2)分类:
A:局部代码块
用于限定变量的生命周期,及早释放,提高内存利用率。
B:构造代码块
把多个构造方法中相同的代码可以放到这里,每个构造方法执行前,首先执行构造代码块。
可以给所有对象进行初始化
C:静态代码块
对类的数据进行初始化,仅仅只执行一次。
(3)静态代码块,构造代码块,构造方法的顺序问题?
静态代码块 –> 构造代码块 –> 构造方法
如果和主函数在同一类中,优先于主函数执行。
14、单例设计模式
设计模式:解决问题最行之有效的思想。是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

单例设计模式解决的问题:保证一个类在内存中的对象唯一性。
比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

Runtime()方法就是单例设计模式进行设计的。

保证对象唯一性的思想:
1,不让其他程序创建该类对象。
2,在本类中创建一个本类对象。
3,对外提供方法,让其他程序获取这个对象。

步骤:
1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象;
2,就在类中创建一个本类的对象;
3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。(作用:可控)

代码体现:
1,私有化构造函数;
2,创建私有并静态的本类对象;
3,定义公有并静态的方法,返回该对象。

单例设计模式分为饿汉式和懒汉式

//饿汉式
Class Single{
    //类一经加载,对象就存在了
    private Single(){}//私有化构造对象
    private static Single s = new Single();//创建私有并静态的本类对象
    //定义公有并静态的方法,返回该对象。
    public static Single getInstance(){
        return s;
    }
//懒汉式
class Single{
       //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
       //延迟加载形式
       private static Single s = null;
       private Single(){}
       public static Single getInstance(){
             if(s == null)
                   s = new Single();
             return s ;
      }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值