JAVA笔记整理4

62 面向对象(概括)

面向对象是相对面向过程而言。

面向对象和面向过程都是一种思想。

面向过程:强调的是功能行为(行为,动作,功能);

面向对象:将功能封装进对象,强调具备了功能的对象;

面向对象是基于面向过程的;

就是把原来的封装起来了

63面向对象(举例)

一切皆对象,万物皆对象;没有对象造对象;

64类与对象的关系

人开门:名题提炼法

人{

   开门(哪个门){  门.开();====>门开的功能}

门{

    开()(操作门轴等)

面向对象三个特点:封装、继承、多态。

以后的开发就是找对象,没有对象创建对象;

找对象、创建对象、使用对象、维护对象的关系;

类和对象的关系:类就是生活中事务的描述,对象就是这类事物,实实在在存在个体;

描述事物:其实就是在描述事物的属性和行为;

定义类:就是描述事物,就是定义属性和行为;

属性对应是类中变量,行为对应类中方法(函数),属性与行为共同成为类中的成员(成员变量,成员方法);

class Car{

    String color="红色";

    int num=4;

   void run(){

         System.out.println(color+"--------"+num)

   }

}

class CarDemo{

      public static void main(String[] args){

                     Car c=new Car();=====>创建一个对象

      }

}

(Car)类型产生一个变量,变量指向一个对象,c就是类型变量指向对象;

new Car()====>产生一个对象

Car         c     =    new Car();

类类型   变量--->对象

对象的特点用于封装数据(行为、属性)

65    面向对象(成员变量与局部变量)

主函数用于独立运行;

成员变量:作用于整个类中;

局部变量:作用于函数中或者语句中;

成员变量在堆内存中,因为对象的存在,才在内存中出现;

局部变量在栈内存中;

66    面向对象(匿名对象应用)

Car c=new Car();

c.num=5

------->new Car().num=5;   这个就是匿名对象;

匿名方法调用方法有意义,调用属性没意义;

匿名对象使用方式一

当对对象的方法只调用一次时,这样写简化,如果对一个对象进行多个成员调用,必须给这个对象起个名字;

匿名对象使用方式二

可以将匿名对象作为实际参数进行传递

等值操作

67 面向对象(封装)

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

好处:1.隔离了变化2.便于使用3.提高复用性4.提高安全行

封装原则:

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

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

类---->包---->框架

68 面向对象(封装private)

private:私有,权限修饰类中的成员(成员变量、成员函数);

私有只在本类中有效;即使new了耶不能访问,提供了对应访问的方式

public void setAge(int a){

      age=a;

}

public void getAge(){

     return  age;

}

一个成员变量通常会有两个访问方式(设置、获取)

封装不是私有的,私有仅仅是封装的一种表现形式,只要权限访问不带的都是封装;

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

69   面向对象(构造函数)

特点:1 函数名与类名一致;2  不用定义返回类型的; 3  不可以用return语句;

重点:只要对象一建立,就会调对应的已知函数;

构造函数的作用:可以给对象进行初始化;

构造函数的小细节:

1.当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数;

2.当类中自定义了构建函数后,默认的构造函数就没有了;

3.构造函数与一般函数在写法上有不同,在运行上也不同,构造是一建立就运行,给对象初始化,而一般方法是对象调用才执行,是给对象添加对象具备的功能;

4.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次;

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

当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中(初始化,忘里面传递就好了)

70 面向对象(构造代码块)

1.构造代码块:作用给对象进行初始化。

2.对象一建立就运行,并且优先于构造函数执行

3.与构造函数的区别:

构造代码块时给所有对象进行统一初始化;

构造函数是给对应的对象初始化;

class Person{

........................

{

       cry();  ==========>单独的代码{}

 }

}

构造代码块中定义的是不同对象共性的初始化内容;

71 面向对象(this 关键字)

构建函数可以被私有化,如果构造函数都私有化就不可能创建对象的

this 看上去是用于区分局部变量和成员变量同名情况

Person(string name){

   this.name=name;

person p=new person("lisi")

this  就代表本类的对象

this 代表它所在函数所属对象的引用;(this 代表那个函数,简单的说 哪个对象调用this所在的函数,this就代表哪个对象)

输出

public void speak(){

      system.out.println("name"+this.name+"......age"+this.age);


72面向对象(this关键字的应用)

this 的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this 来表示这个对象。

但凡本类功能内部使用了本类对象,都用this表示;

public boolean compare(Person p){

      return this.age=age;

}

class PersonDemo3{

public static void main(String[] arg){

Person p1=new Person(20);

Person p2=new Person(25);

boolean b=p1.compare(p2)

System.out.println(b)

);

}

}

哪个类调用了这个方法,this就代表哪个类

73  this关键字在构造函数间的调用

this语句:用于构造函数之间进行相互调用;

用的时候传相对应的参数;

1.this语句只能构建函数的第一行;因为初始化要先执行

person(string name,int age){

   this(name);//P(name)姓名初始化

   this.age=age;

class PersonDemo4{

   Person p=new Person("lisi",30);

}

一般函数不能直接调用构造函数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容