JavaSE基础系列之面向对象(上)

面向对象

1,什么是面向对象?
           面向对象(Object Oriented,OO)是软件开发方法,是一种对现实世界理解和抽象的方法。
           面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
           我们写程序就相当于OOP。
           面向对象中有两个概念,类和对象,这两个可以理解为面向对象的一个基石。
           马云说,要让天下没有难做的生意,那么面向对象的思想,就是让我们能够做到,天下没有难写的程序。
2,面向对象的三大特征

1,封装性
2,继承性
3,多态性

类和对象

1,什么是类?

类,对某一类事物的抽象描述(抽象化),用于描述一组对象的共同特征和行为,例如,猫和狗,统称为动物。 人民币和美元,统称为货币。

2,什么是对象?(面向对象的核心,毕竟是面向对象嘛!)

对象,对于某类事物的具象描述(实例化),例如,人民币是货币的一种,猫是动物的一种。

3,类和对象之间的关系?

如上所述,类是对具有相同特征的对象的描述,而对象是对类的一种具体化的解释。
通俗点讲,包含与被包含的关系,Java是一种编程语言,编程语言中有Java这个分支。

4,类的组成

类由成员变量和成员方法组成,其中成员变量(属性)可以理解为对对象特征的描述,成员方法(方法)可以理解为对对象行为的描述。
例如:人都有国家(属性),人都会花钱(行为),一个名词,一个动词。

public class Person {
	String nationality;
	void spendMoney() {
		System.out.println("大家好,我今天花了" + nationality + "的钱");
	}
}

5,对象的创建与使用

类名 对象名称 = new 类名();
eg:Person p1 = new Person();
其中:“new Person()” 用于创建Person的一个实例,p1相当于Person的一个引用,存储的是一个地址,指向内存的堆区中的Person实例。
通过对象的引用来访问对象的所由成员的格式:对象引用.对象成员
需要注意的是,成员变量(属性)如果不手动赋值的话,系统会默认为其赋值,根据其不同的类型,需要注意的是char类型的默认赋值为一个空字符,"\u0000"。

public class ObjectDemo {

	public static void main(String[] args) {
		Person p1 = new Person();
		Person p2 = new Person();
		p1.nationality = "中国";
		System.out.println(p1.nationality);
		p1.spendMoney();
		p2.spendMoney();
	}

}
结果:
中国
大家好,我今天花了中国的钱
大家好,我今天花了null的钱

6,类的封装
      类的封装就是在定义一个类的时候,将类中的属性私有化,不让外部随意对其进行操作,外界需要对私有化对象操作的时候,需要调用类中有关私有属性的方法。

通俗点讲,世界上有那么多国家,在中国(这个类中),只能消费人民币(私有化),美元在这不流通,那美国人在中国消费是不是需要把美刀兑换成人民币呢(外部操作)?所以中国提供了货币兑换(中国这个类提供的方法)。

//举个例子
class Student {

	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if (age <= 0 || age > 150) {
			System.out.println("你输入的年龄有问题,能不能长点心?");
		} else {
			this.age = age;
		}

	}

}

public class Demo1 {

	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student();
		s1.setName("张三");
		s1.setAge(20);
		System.out.println("姓名:" + s1.getName() + ",年龄:" + s1.getAge());
		s2.setName("李四");
		s2.setAge(-10);
		System.out.println("姓名:" + s2.getName() + ",年龄:" + s2.getAge());
	}
}

7,通过上边的例子可以知道,我们在创建对象的时候,是需要new一下的,通过new调用类中的构造方法,那么什么是构造方法呢?

1,构造方法的定义
      类中的一个特殊成员,在类实例化的时候自动被调用。
      构造方法需要满足的条件:方法名和类名相同,无返回值类型,不能使用return返回值。
2,为何上边那么例子没有构造方法,却可以创建对象呢?
      因为Java中,如果没有显示创建构造方法的话,那么系统会自动提供一个无参构造方法。但是如果显示创建之后,Java将不再提供。
      简单点说,就是,你在中国出生,如果你爸妈不给你修改国籍的话,你就是一个中国人了,但是你爸妈主动给你修改了国籍,那么中国凭什么还要再给你提供中国国籍?一个道理。
3,既然是方法,那么就会有方法的重载,构造方法也一样,一个类中允许有多个构造,正如一个地球上,有多个国籍,可以选择。
4,构造方法不要使用private()修饰,修饰了之后,将无法通过该构造方法实例化对象。

class Student {

	int age;
	String name;
	public Student() {
		
	}
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

public class Demo1 {

	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student("张三", 20);
		System.out.println(s1.name + ":" + s1.age);
		System.out.println(s2.name + ":" + s2.age);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42036640/article/details/83280229
今日推荐