JAVA——面向对象(上)

面向对象(上)

  1. 了解面向对象的3个特征
  2. 熟悉类和对象的创建和使用
  3. 掌握类的封装性
  4. 掌握构造方法的定义和重载
  5. 掌握this和static关键字的使用

1.面向对象的概念

	面向对象是一种符合人类思维习惯的编程思想。
	现实生活中存在各种形态不同的事物,事物之间存在着各种各样的联系。
	在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的
	联系,这种思想就是面向对象。

	面向对象有三种特征:封装性、继承性、多态性。

2.类与对象

对象是根据类创建的,并且一个类可以对应多个对象。

2.1类的定义

	类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作
属性;成员方法用于描述对象的行为,可简称为方法。
	类名的定义要满足大驼峰命名法,尽量做到见名之意。   
定义一个类
class Person {
	//定义一个int类型的变量age
	int age;
	//定义speak()方法
	void speak() {
	System.out.println("大家好,我今年" + age + "岁!");
	}
	
}
上面的代码中,Person是类名,age是成员变量,speak()是成员方法。

2.2对象的创建与使用

创建对象的格式:
		类名	对象名称	= new 类名();
例如,创建Person类的实例对象:
		Person p =  new Person();
使用的方法为:
		对象名称.对象成员  		这是调用类的方法
		对象名称.成员变量 = 和成员变量类型一致的数据	这是调用成员变量并赋值

此为成员变量的初始化值在这里插入图片描述

2.3 类的封装

符合JavaBean规范的封装:
	要求:
		1.所有成员变量全部私有化,即使用private修饰。
		2.必须提供一个无参构造方法。
		3.使用private修饰的成员变量提供对应的操作方法,即使用
			getXxx方法获取属性值,setXxx方法设置属性值
private关键字是一个权限修饰符
private修饰的成员变量,成员方法,都是私有化内容,有且只能在类内
使用,类外没有 任何的操作权限!!
class Cat {
	//所有的成员变量全部私有化
	private String name;
	private int age;
	//完成对应Constructor,Setter,Getter
	public Cat() {
	}
	public Cat(String name, int age) {
		this.name = name;
		this.age = age;
	}
	//Setter和Getter方法
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}	
}
public class Demo2 {
	public static void main(String[] args) {
		Cat cat = new Cat();	
		cat.setName("小八");
		cat.setAge(1);
		
		System.out.println("Name:" + cat.getName());
		System.out.println("Age:" + cat.getAge());
	}
}

3. 构造方法

构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。

3.1 构造方法的定义

构造方法需要满足的条件有:
	1.方法名与类名相同。
	2.在方法名的前面没有返回值类型的声明。
	3.在方法中不能使用return语句返回一个值,但是可以单独写
	  return语句来作为方法的结束。
class Person {
	//下面是类的构造方法
	public Person() {
	System.out.println("无参构造方法被调用了...");
	}
}
public class Example01 {
	public static void main(String[] args) {
		//实例化Person对象
		Person p1 = new Person();
	}
}

3.2 构造方法的重载

	构造方法可以重载,在一个类中可以定义多个构造方法,只要每一个构造
方法的参数类型或参数个数不同即可。
class Person {
	//定义一个int类型的成员变量
	int age;
	//下面是类的构造方法
	public Person() {
		System.out.println("无参构造方法被调用了...");
	}
	public Person(int a) {
		age = a;
		System.out.println("有参构造方法被调用了..." + age);
	}
}
public class Example02 {
	public static void main(String[] args) {
		//实例化Person对象
		Person p1 = new Person();
		Person p2 = new Person(12);
	}
}

4. this关键字

this关键字在程序中的3种常见用法,具体如下。
	1.通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量
	  名称冲突问题。
	2.通过this关键字调用成员方法
	3.构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能
	  像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用
	  "this(对应参数)"的方式来调用其他的构造方法。
	  使用this调用构造方法时,有几个注意点。
	  	① 只能在构造方法中使用this调用其他构造方法,不能在成员方法中
	  	  使用。
	  	② 在构造方法中。使用this构造方法的语句必须位于第一行,且只
	  	  能出现一次。
	  	③ 不能在一个类的两个构造方法中使用this互相调用。

5. static关键字

5.1 静态变量

	使用static关键字修饰的成员变量,被称作静态变量。静态变量被所有
实例共享,可以使用“类名.变量名”的形式来访问,这也是所推荐的方式。
	注意:
		static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则
	编译会报错。

5.2 静态方法

	在类中定义方法的前面加上static关键字修饰,这个方法就是静态方法,
可以不用通过创建对象直接使用该方法,格式为:类名.成员方法。
	注意:
		在一个静态方法中只能访问用static修饰的成员,原因在于没有被
	static修饰的成员需要先创建对象才能被访问,而静态方法在被调用时
	可以不创建任何对象。

5.3 静态代码块

	在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,
用static关键字修饰的代码块被称为静态代码块。当类被加载时,静态代码块
会执行。需要注意的是,静态代码块在类第一次使用时才会被加载,并且只会
加载一次
class Example {
	//静态代码块
	static {
		System.out.println("测试类的静态代码块执行了");
	}
	public static void main(String[] args) {
		//下面的代码创建两个Person对象
		Person p1 = new Person();
		Person p2 = new Person();
	}
}
class Person {
	static {
		System.out.println("Person类中的静态代码块执行了");
	}
}
运行结果如下。
测试类的静态代码块执行了
Person类中的静态代码块执行了
发布了4 篇原创文章 · 获赞 3 · 访问量 171

猜你喜欢

转载自blog.csdn.net/weixin_44690301/article/details/104331736