你不知道的Java笔记5-- Java的面向对象

1、面向过程
通常是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,最后一个一个依次调用方法来解决。
面向过程考虑的问题是程序运行的流程,主要是程序的算法,而数据只是在必要的时候插入到算法中间。

2、面向对象
把构成问题域的事务分解成各个对象,给对象赋予相应的属性和行为,通过多个对象的相互协调来解决问题。建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为 。
面向对象是用计算机去描绘现实的世界,以人文本,更多用于做应用层的软件开发。

从面向过程到面向对象,不仅仅是编程方式的改变,更重要的是思考方式的改变。

3、类:对一组具有相同属性和行为的对象的抽象。

4、面向对象的三大特征:
(1)继承
继承是为了实现资源的共享,继承可以共享数据,重用代码。

(2)封装
封装能对私有的东西进行封装,确保数据的安全性。

(3)多态
多态是事物的多种形态。
继承之后重新改造,以实现更好的功能。

5、类中的代码分为:
(1)属性/成员属性 :变量定义

(2)方法/行为 :具体的执行代码块。

6、同一个文件可以写多个类,但必须只有一个public类。

7、创建对象
类名 对象名=new 构造器(构造函数)
例:Employee zhangsan=new Employee();

//创建对象是Java虚拟机自动生成的默认构造函数
Employee()
{

}
如果新建自己的构造函数时,默认的构造函数就会被覆盖掉, 想让默认的构造函数不被覆盖掉,可以先写出默认的构造函数(没有任何的属性和方法,只有方法名和空的方法体),然后才自定义自己的新的构造函数(自定义的属性和方法)。
//先写出默认的构造函数(没有任何的属性和方法,只有方法名和空的方法体)
Employee()
{

}

//自定义自己的新的构造函数(自定义的属性和方法)
Employee(String name,int age)
{
name=new name;
age=new age;
void say
{
System.out.println(“我的名字是:”+name+”年龄是:”+age);
}

}
//创建对象时直接实例化
Employee p=new Employee(“张三”,1);

8、面向对象的编程过程
(1)定义好类和方法(属性和行为)
属性:变量的定义
行为:方法,干什么事
构造函数:默认构造函数、自定义构造函数
(2)创建对象/创建对象直接赋值
类名 对象名=new 构造器;
类名 对象名=new 构造器(“*”,**);
(3)给对象赋值
对象.属性=值
“.”:成员运算符

9、创建对象时构造函数
(1)构造函数名称和类名相同
(2)构造函数用来创建对象,在对象创建时才被调用
(3)在创建对象时已经分配了内存,方法是没有分配内存空间的。
(4)每创建一个对象都是新的、跟之前不一样的对象,但是内容可能完全相同。

10、匿名对象
创建完对象,在调用该对象的方法时,也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫匿名对象
(1)Person p1 = new Person();
p1.sayHello();
P1:句柄(新建对象名称)
new Person():对象,实例

(2)new Person(“小张”,20).sayHello();
执行完这句语句之后,对象就会变成垃圾,被回收,内存会得到回收。

11、this关键字
this:代表当前对象;是一个引用;指向调用该方法的当前对象。

(1)用this关键字的情况
方法中的变量与成员变量重名 ;
在一个构造器中,调用其它重载的构造器 ;
返回当前对象的引用 。

为什么要this
当类的变量名与改造函数参数的名称和改造函数变量的名称相同时,无法对类的变量进行正常的赋值,在对象实例化是只把值付给了构造函数,输出时只是输出了类的默认值而不是对象实例化的值。

出现问题的原因:当全局变量与局部变量名称相同时,程序会先访问局部变量,遵循的是“就近原则”。

解决方法:在构造函数的变量前加上this,让构造函数的变量指向的是当前的构造函数,而不是类。

例子:

//定义一个people类,属性有name和age
public class People
{
String name;
int age;

    public void  say()
    {
        System.out.println("我的名字是:"+name+" 我的年龄是:"+age);
    }

//定义一个构造函数people(),属性有name和age
public People(String name,int age)
{
name=name;
age=age;

}


public static void main(String[] args) {
    //创建对象并实例化
    People p=new People("小林",20);
    p.say();

}

}
未加this之前的源代码和程序运行结果
这里写图片描述

加this后的源代码和程序运行结果

这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值