面向对象01

1. 面向对象和面向过程的区别?

面向过程就是分析出解决问题的步骤,然后用函数一步一步实现,在使用的时候调用即可;

面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。

面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 

缺点:性能比面向过程低

2. 类和对象

 什么是类?什么是对象?

  1)现实世界是由很多对象组成的

       基于对象抽出了类

  2)对象:真实存在的单个的个体

       类:类型/类别,一类个体

3)类中可以包含:

       3.1)所有对象所共有的特征/属性(静)---变量

       3.2)所有对象所共有的行为(动)------方法

  4)一个类可以创建多个对象

       同一个类的多个对象,结构相同,数据不同

  5)类是对象的模板,对象是类的具体的实例

3. 对象的创建流程?

4.1)javac编译源代码,生成若干个字节码

4.2)java将相关的字节码文件加载进JVM中的方法区

4.3)JVM在方法区中找main主函数加载进栈内存中运行

4.4)主函数进栈

4.5)创建对象的流程

在堆内存中开辟对象的空间并分配地址

对成员变量进行默认初始化

相应的构造函数进栈 先进行显示初始化

再执行构造函数的代码 进行针对性初始化

构造函数出栈 对象创建完毕 将对象的地址赋予在函数中的变量

创建对象内存图解

4. 私有private关键字

  • 是一个权限修饰符,用于修饰成员变量和成员方法.
  • 私有是针对类,而不是针对对象,也就是说,同一个类的所有的不同的对象之间,可以互相访问别的对象的的私有的成员.
  • 被私有化的成员只在本类中有效.
  • 因此对私有的变量进行访问 可以提供对应的 setXxx或者getXxx的方法
class Person{
	private int age; //私有成员变量
	private String name;
	//对外提供设置成员变量的方法
	public void setAge(int a){
		//由于是设置成员变量的值,这里可以加入数据的验证 
		if( a < 0 || a > 130 ){             
			System.out.println(a+"不符合年龄的数据范围");             
			return; 
		}
	}
	 public int getAge(){
		return age;
	}
}

 5. 构造函数

构造函数(构造方法、构造器、构建器)

   1)常常用于给成员变量赋初值

   2)构造函数名与类同名,没有返回类型(不写void),有return。

   3)在创建(new)对象时被自动调用(有参传参)

   4)若自己不写构造函数,则编译器默认提供无参构造,若自己写了构造,则不再默认提供

   5)构造方法可以重载

构造函数的格式

修饰符 构造函数名(参数列表){ }

class Person{
	private int age;
	private String name;
	//Person的无参构造
	Person(){
		
	}
	//Person的一个参数构造
	Person(int a){
		this.age=a;
	}
	//Person的两个参数构造
		Person(int a,String nm){
			this.age=a;
			this.name=nm;
		}
}

6. 构造函数和成员函数的区别?

构造函数没有返回值 成员函数可有可没有

构造函数只有在创建对象时被调用 对象创建完毕后不能被对象调用。成员函数在对象创建之后由对象调用

构造函数可以调用构造函数

构造函数可以调用成员函数 但是这个成员函数一般不会当作对象的特有行为去看待。

7. this关键字

指代当前对象,哪个对象调指的就是哪个对象,方法中访问成员变量之前默认都有个this

this的用法:

   1)this.成员变量名-------访问成员变量

   2)this.方法名()---------------调用方法

   3)this()--------------------------调用构造方法,不能相互调用,必须在第一行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章