java基础知识整理(6)——面向对象思想 类与对象

一、面向对象思想

1、面向对象与面向过程区别和联系。

                  A:区别:

                           **面向过程关注执行过程,这个时候我们是执行者。

                           **面向对象关注的是最终功能,这个时候我们是指挥者。

                  B:联系:.

                           **面向对象是基于面向过程的。

2、面向对象

                  A:面向对象思想的特点。

                           **是符合人们思考习惯的一种思想。

                                    ***编程思想就是来源于生活。

                           **将复杂的问题简单化了。

                           **把我们从执行者变成了指挥者。                                   

                  B:举例

                           **我去面试,boss调用了我的写程序的功能,不需要自己去做。

                           **找女朋友洗衣服、做饭。

                  C:请给我解释面向对象的思想。

                           **先说特点

                           **举例说明这些特点

3、面向对象思考问题的方式

                  找对象,完成功能。

                  如果对象不存在,自己就造一个对象。

4、面向对象的三大特性

                  A:封装

                  B:继承

                  C:多态

此外面向对象还有个一个特性------->抽象!

二、类与对象

1、类

是对现实世界事务的抽象。

                  A:类就是一类事物的抽象。

2、对象

是该类事物具体的存在个体。

3、如何描述一个类

                  A:现实生活中我们用属性和行为来描述一个事物。

                  B:这个时候我们就可以用属性和行为来描述一个类

                           那么,他们在类中分别对应什么呢?

                           **属性 -- 成员变量 (属性)--------------->整个类中有效

                           **行为 -- 成员方法 (函数,功能)------>整个类中有效

4、自定义类的分析过程

                  A:分析:

                           **首先分析这个类是个什么样的事物

                           **其次你就应该该事物具有哪些属性和行为

                           **把这个事物的属性和行为对应成我们类的成员变量和成员方法。

                  B:自定义一个电脑类

                           **属性 颜色,品牌,重量

                           **行为 开机,关机,上网

                     对应成类

                           //自定义电脑类

                           class Computer

                           {

                                    String color;//颜色

                                    String type;//品牌

                                    double weight;//重量        

                                    public void start(){}//开机

                                    public void stop(){}//关机

                                    public void online(){}//上网

                           }

5、对象的创建和使用及对象的内存图

                  A:对象的创建

                  Student s = new Student();//创建一个Student的对象,并把它赋给了Student类型的s。

                  B:使用对象

                           如果你想使用类中的方法和属性,你必须通过类的实例(对象)来调用。

                           调用方式:

                                    对象名.属性;

                                    对象名.方法名(参数列表);

三、成员变量和局部变量的区别

1、作用范围

                  成员变量作用于整个类。

                  局部变量只作用于它所属的范围(函数,语句);

2、生命周期&位置

                  成员变量存储在堆内存中,是属于对象的,随着对象的存在而存在,随着对象的消失而消失。

                  局部变量存储在栈内存中,是属性它所属范围的,使用完立即被释放。

3、初始值

                  成员变量都有默认初始化值。

                           **整型 0

                           **浮点型 0.0

                           **字符型 '\u0000' 空字符

                           **布尔型 false

                           **字符串 null

                  局部变量没有默认值,要想使用,必须遵循:

                           先定义(声明),再赋值,最后使用。

四、匿名对象(为了简化书写)

1、概念

没有名字的对象。是对象的一种简写形式。

2、什么时候用?

                  A:该对象只执行一次方法的调用。多次调用必须起名字!

                           **new Car().start();

                  B:可以作为实际参数传递

                           **public static void method(Car c){}

                           **method(new Car());

五、封装

1、概念

把实现细节隐藏,提供公共的访问方法。

任何对象或者系统都应该有一个明确的边界,边界内部的改变对外部没有影响,在java中,类包含了数据和方法,将数据放到一个类中就构成了封装。他将变化的进行了隔离,这样大大的提高了程序的安全性,由于他提供了公共访问方式,我们只需要调用它的功能即可,这样就提高了代码的复用性(只关注功能不用在意具体实现),自然而然就方便使用了。我们只需要将类中的成员变量私有(在变量名前加private即可),并提供相对应的set和get方法。                 机箱和主板的例子。

私有只是封装的一种体现,隐藏才算是封装。

2、好处

                  A:将变化隔离。

                  B:便于使用。

                  C:提高重用性。

                  D:提高安全性。

3private关键字

                  A:private

                           **私有的

                  B:特点

                           **是一个权限修饰符。

                           **可以修饰成员,被修饰的成员只能在本类中访问

                  C:一般用法

                           **一般用于将成员变量私有,提供公共的get,set方法进行访问。                 

         自定义类 一般格式:

                  class Student{

                           private String name;

                           public void setName(String n){

                                    name = n;

                           }

                           public String getName(){

                                    return name;

                           }

                  }

                  注意:set方法可用于对成员变量进行赋值。

六、构造方法

1、用途

创建对象,并进行初始化动作。

2、特点

                  A:构造方法名和类名相同

                  B:没有返回类型

C:没有返回值

                  运行特点:对象创建时被调用。

3、构造方法与成员方法的区别

                  A:格式区别

                           构造方法要求:方法名与类名相同,没有返回类型。

                           成员方法要求:记住函数的定义格式。

                  B:用途

                           构造方法用于创建对象,并初始化值。

                           成员方法用于完成一个功能。

                  C:什么时候被调用

                           构造方法一new就被调用。

                           成员方法时通过对象名来调用。

 

                           你想创建对象必须使用构造方法。

                           你想使用功能必须通过对象名来调用。

 

                           你想使用一个功能:首先创建对象,然后使用对象的功能。

4、构造重载

                  A:构造方法名相同,参数不同。

                  B:构造方法的注意事项

                  **自定义类中如果没有构造方法,系统会默认给出一个无参构造方法。

                      **如果你给定了构造方法,系统将不再提供无参构造方法了。

                             ***如果给定的有无参构造方法,你可以继续使用无参构造方法来创建对象。

                             ***如果没有无参构造方法,你可以不使用。否则,就会报错。

                           **建议:每次我们都手动给出无参构造方法。

                  注意:带参构造方法也可以对成员变量进行赋值。

 

七、this关键字

1、概念

代表本类对象的一个引用

                  A:方法被哪个对象调用,该方法内的this就代表哪个对象。

2、使用场景

                  A:局部变量隐藏成员变量

                           class Student{

                                    private String name;

                                    /*

                                    public void setName(String n){

                                             name = n;

                                    }

                                    */

                                    public void setName(String name){

                                             this.name = name;

                                    }

                                    public String getName(){

                                             return name;

                                    }

                           }

                           Student s = new Student();

                           s.setName("张三");  

                           String str = s.getName();

                           System.out.println(str);

                           System.out.println(s.getName());

 

                  B:构造方法中使用this

                           class Student{

                                    private String name;

                                    private int age;

                                    Student(){}

                                    Student(String name){

                                             this.name = name;

                                    }

                                    Student(int age){

                                             this.age = age;

                                    }

                                    Student(String name,int age){

                                             //this(name);//代表就是调用构造方法----构造方法中的调用方式

                                             this.name = name;

                                             this.age = age;

                                    }

                           }

                  C:比较年龄

                           public boolean compare(Person p){

                                    return this.age==p.age;

                                    //return this.getAge()==p.getAge();//是可以的。

                           }

3、内存图看懂

4、自定义类

我们后面在自定义类的时候:

1:给属性赋值有几种方式

         定义的时候给属性。

         A:set赋值 开发都用set。

         B:构造方法

2:提供一个无参构造

//自定义一个学生类

class Student{

         private int age;//姓名

private String name;//年龄

Student(){}

         public void setAge(int age){

                  this.age = age;

         }

         public int getAge(){

                  return age; //return this.age;

         }

         public void setName(String name){

                  this.name = name;

         }

         public void getName(){

                  return name;    

         }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值