java面向对象

1.什么是面向对象

一个很抽象的概念,它相对面向过程而言。
过程与对象都是一种解决问题的思想。
面向过程:强调的是功能行为,一种过程,先干啥,再干啥;
面向对象:将功能封装到对象里,强调的是具备某功能的对象;
计算机语言为了更好的去描述现实生活中的事物,也一样会按照生活中的思考方式来定义,这样人们使用起来才会更方便。

面向对象的三个特征:
封装(Encapsulation);
继承(Inheritance);
多态(Polymorphism)。

2.类和对象的关系

类是对生活中某一类事物的描述(一种抽象概念),对象是该类事物实实在在存在的个体。(对象==实例)

3.类的定义

[访问权限][修饰符] class 类名{
1~n个构造方法;
0~n个字段;
0~n个方法
}

构造方法:用来构造类的实例(默认有一个无参的构造方法,得使用new调用)
字段:类或对象所包含的数据,对类状态的一种描述;
方法:类或对象的特征或行为

class  CellPhone{
    String brand = "google";
    String color = "red";
    double price;
	
    public void showInfo()
    {		
	System.out.println(
		brand+ "手机是"+color+"色的"+"价值"+price);
    }
}

4.static关键字

特点:

  • 随着类的加载而加载
  • 优先于对象存在
  • 被所有对象所共享
  • 可以直接被类名调用
    使用注意:
  • 静态方法只能访问静态成员
  • 但是非静态成员可以访问静态成员;
  • 静态方法中不可以使用this,super关键字

可修饰字段,方法。
用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。
static 修饰的字段 == 类字段
static 修饰的方法 == 类方法

没使用static修饰的字段和方法,成员属于类的单个实例,
不属于类。
没有static 修饰的字段 == 实例字段
没有static 修饰的方法 == 实例方法

类和实例访问字段和方法的语法:
访问类成员: 类.字段 类.方法
访问实例成员: 实例.字段 实例.方法

static 修饰的字段和方法,既可以通过类调用,也可以使用实例调用;

没static 修饰的字段和方法,只能使用实例来调用

5.匿名对象

特点:
对方法或字段只进行一次调用时;

  • new Car().show();
  • new Car().run();
    可作为实际参数进行传递;
  • public void show(Car c){ }
  • new Car().show(new Car());
    只在堆内存中开辟空间,而没有在栈内存的引用。

6.面向对象 之 封装

  • 封装的两个含义:
    1. 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);
    2. "信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;
  • 封装机制在程序中的体现是:把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。
  • 程序中的一种体现:通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。
  • boolean 类型的变量没有getXX,只有 isXX;

this关键字

  • 特点:this表示当前对象。
    当前对象 ←→ 当前正在调用实例成员的对象
    换言之:谁调用了方法,谁就是当前对象。
  • 什么时候使用this关键字呢?
    方法间的相互调用;
    this.字段;
  • 构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。
  • this不能用在static修饰的方法里和static修饰的代码块里;

7.访问修饰符

  • private 类访问权限:本类内部可以访问,不能继承到子类;
  • default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;
  • protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;
  • public 公共访问权限:任何地方都可以访问,能继承到子类;

8.构造方法

  1. 特点:
    方法名与类名相同
    不用定义返回值类型
    不需要写return语句

  2. 作用:
    给类中的字段进行初始化,可以用来创建对象。
    注意:

  3. 默认构造方法的特点。
    多个构造方法是以重载的形式存在的。

  4. 对象的产生格式:
    类名称 对象名 = new 类名称();
    因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。
    如:CellPhone cp = new CellPhone();

9.类的设计分析

  • 根据要求写出类所包含的字段;
  • 所有的字段都必须私有化;
  • 封装之后的字段可通过setter和getter设值和取得;
  • 按需求可添加若干构造方法;
  • 根据需求可添加相应的方法;
  • 类中的所有方法都不要直接处理(输出打印),而是交给调用者去处理。
原文地址:https://www.cnblogs.com/linbin7/p/14522803.html