标签:
今天来说说java面向对象的知识点~事实上。java在其发展过程中可以成功。非常大一部分原因是其面向对象的思想~
1、概念
如今来说面向对象思想。也不是什么新的知识点了,我们知道如今非常多语言都有面向对象的思想了;当然我们还知道如今依然非常火的C语言。事实上还是面向过程的语言。包含近期一段时间也出现了非常多新的思想,比方面向函数,面向分布式,面向...等等一系列的东东,事实上这些都仅仅是一个概念而已~
在面向对象中。实际上还存在着三个基本的特性:
·封装性:保证对外部不可见;
·继承性:继续发扬广大。
·多态性:就属于变来变去;
2、类与对象
好了,概念说完了。来说说类与对象吧。。
。
类:类是一组共性的产物,是同一类事物的集中表现。
对象:是一种个性的体现,是个体的产物。
这句话非常重要:类是对象的模板。对象是类的实例
3、java中类的定义
java中定义类有两种方式:public class和class
· 使用 public class 声明的类必须与文件名同样,假设使用class 声明的类能够与文件名不同
· 在一个*.java的文件之中,仅仅能存在一个public class。可是能够同一时候存在多个class的定义
· 仅仅要是定义类则要求每一个单词的首字母大写 ——> 约定
比方这边的People.java文件里的定义:
package me.javen.oop;//包名
class Person { // 定义类
	String name; // 定义属性
	int age; // 定义属性
	public void say() { // 定义方法
		System.out.println("123");
	}
}
public class People { // 定义类
	public static void main(String[] args) {// 定义方法
	}
}那么上面定义的类,怎么来使用呢?
Person person = null;//在栈内存中声明,此过程叫做声明对象 person = new Person();//开辟相应的堆内存空间,此过程叫做实例化对象
即:Person person = new Person();
这边是为了说明其内存结构才写成两条的。
看下面程序:
	public static void main(String[] args) {// 定义方法
		Person person = null;
		person = new Person();
		
		//使用类中的属性
		person.name="Mr.稻帅";
		person.age=24;
		
		person.say();	//用法
	}以下来介绍构造方法
5、构造方法
定义:在一个类中定义的方法名称与类名称同样。且无返回值声明的方法,称为构造方法。
还是看到刚刚的代码:person = new Person();
事实上在new的过程中,new的是Person类的默认构造方法。
记住:在一个类中假设没有明白的定义一个构造方法的话,则会自己主动生成一个无參的,什么都不做的构造方法。假设类中存在构造方法,则在new的过程中就必须使用定义了的构造方法。
这句话对于小白,理解起来可能有点困难,分号前面的可能好理解一点..參考Person就能理解前半句。后半句关于使用构造方法可能就有点困难了。事实上也不难,看以下程序:
看到了不,eclipse的java语法校验会报错,报的是未定义Person()这样一个构造方法,而在Person类中定义的是Person(String name, int age)这种一个构造方法。。
当然构造方法能够定义多个的~
class Person { // 定义类
	String name; // 定义属性
	int age; // 定义属性
	
	public Person(String name, int age) {// 定义两个參数的构造方法
	}
	public Person(String name) {// 定义一个參数的构造方法
	}
	public Person() {// 定义无參构造方法
	}
	public void say() { // 定义方法
		System.out.println("姓名:" + name + "。年龄:" + age);
	}
}以下来说说封装性。
6、封装性
从定义上看:封装性就是指类内部的定义对外部不可见。
作用是为了保护数据的安全性~
那什么叫做对外部不可见?看代码:
private String name; // 定义属性 private int age; // 定义属性
在使用的过程中就会有错误,提示的是没有权限訪问(对外部不可见)
以上的一种形式就叫做封装~
那么,name和age属性怎么訪问了?
package me.javen.oop;//包名
class Person { // 定义类
	private String name; // 定义属性
	private int 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 Person(String name, int age) {// 定义两个參数的构造方法
	}
	public Person(String name) {// 定义一个參数的构造方法
	}
	public Person() {// 定义无參构造方法
	}
	public void say() { // 定义方法
		System.out.println("姓名:" + name + ",年龄:" + age);
	}
}
public class People { // 定义类
	public static void main(String[] args) {// 定义方法
		Person person = null;
		person = new Person();// 添加了无參构造方法
		// 通过setter方法设置值
		person.setName("Mr.稻帅");
		person.setAge(24);
		person.say(); // 用法
		//通过getter方法获取封装了的属性的值
		System.out.println("姓名:" + person.getName() + ",年龄:" + person.getAge());
	}
}
1、属性或方法不希望被外部所訪问的话。则能够使用privatekeyword声明;
2、在开发过程中。假设不是特殊情况,java类中定义的属性基本都要求设置封装。
标签:
原文地址:http://www.cnblogs.com/yxwkf/p/5380258.html