天天看点

Java类和对象学习笔记

Java类和对象学习笔记

Java语言介绍:

Java是一门面向对象编程语言,吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,具有功能强大和简单易用两个特征。

这里我们提到的面向对象,与之相对应的还有面向过程,在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以面向对象的开发更像是一个具备标准的开发模式。

类与对象:

类与对象时整个面向对象中最基础的组成单元。

类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和方法;

对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。

使用:

1.定义类

给出一个示例:

public class Student {

	public String name;
	private int age;
	//类的属性
	public void setAge(int a){
		a = age;
	}
	//类的方法
}
           

故可以得出类的通用格式为:

class 类名称 {
         属性 ;
         方法 ;
        
}
           

当类完成创建以后,我们还需要创建类的对象进行使用,一般情况下直接采取如格式

类名 对象名 = new 类名 () ;
Student st = new Student();
//以之前定义的类为例
           

当然也可以先将对象声明,在之后合适的位置进行实例化

类名 对象名 = null ;
对象名 = new 类名 () ;
Student st = null;
.
.
.
st = new Student();
//以之前定义的类为例
           

对象实例化以后,可以对类的属性或者方法进行如下调用:

st.String name;
st.setAge(19);
//对象.属性:表示调用类之中的属性;
//对象.方法():表示调用类之中的方法;
           

Java的控制访问权限:

对于前文中写到的public private 这些前缀,我们需要对其做一个解释说明,针对java语言中的控制访问权限,分为以下四大类:

public:公开,可以被所有其他类所访问。

private : 本类访问,私有;只能被自己访问和修改。

protected -:子女、朋友可以访问保护;自身、子类及同一个包中类可以访问。

friendly(default):默认同一包中的类可以访问,声明时没有加修饰符,默认是friendly。

我们一般比较常用的是public 和 private,在类中定义private属性后,我们无法在其他类里直接的进行外部访问,此时我们需要设置常见的set/get方法来初始化对象的属性,当然我们也可以用构造方法的形式来初始化对象的属性

public void setAge(int age){
		this.age = age;
	}
	//定义set方法,初始化属性
	public int getAge(){
		return age;
	}
	//定义get方法,获取属性
           

方法:

方法的创建

格式:

public 返回值类型 方法名(参数类型 参数名,,)
 { 方法体..}
           

构造方法的创建

格式:

public 类名(参数类型 参数名,,)
{ 方法体..}
           

这是两种方法的创建方式,可以看出,二者有两个主要区别

其一是返回值上,方法的创建需要写出返回值类型,没有返回值也要写void,而构造方法是不要返回值。

其二,方法的创建可以随意取名,而构造方法必须与类同名。

需要补充的是每个类都有一个默认的无参构造方法,当自己定义构造方法,那么默认的无参构造方法就会被替代。

构造方法的主要作用在于:创建对象并初始化属性。

示例如下:

public class Student {
	private String name;
	private int age;

public void setAge(int age){
		this.age = age;
	}
	//定义set方法,初始化属性
	public int getAge(){
		return age;
	}
	//定义get方法,获取属性
	public void setName(String n){
		name = n;
	}
	//定义set方法,初始化属性
	
	public String getName(){
		return name;
	}
	//定义get方法,获取属性
  public Student(String n,int a){
		name = n;
		age = a;
	}
	//构造方法
}

           

此处我们可以看到类的对象为private权限,所以,当我们创建一个manage类去执行功能时,无法直接调用属性进行初始化,此处给出两种方式进行比较

public class Manage1 {

	public static void main(String[] args) {
		Student st = new Student();
		st.setName("张三");
		st.getName();
		st.setAge(18);
		st.getAge();	
	}
}//set/get方法
           
public class Manage2 {

	public static void main(String[] args) {
		//创建对象:类名 对象名 = new 构造方法;
     Student st = new Student("张三",18);
     
	}
}//构造方法
	
           

可见构造方法的方便之处,不过需要记住构造方法在实例化对象的时候只调用一次,而普通方法是在实例化对象之后可以随意调用多次。

此外,构造方法也可以进行重载,重载构造方法时务必注意其参数的类型及参数的个数。

public Student(){

	}//无参的构造方法
	public Student(String n,int a){
	
		name = n;
		age = a;
	}
	//方法重载
           

构造方法之间也可以相互调用

构造方法相互调用:this(实参,,);
举例:
public Student(String n,int a){
		this();//调用无参数的构造方法,无实际作用
		name = n;
		age = a;
	}
	public Student(){
	}
           

或者

public Student(String n,int a){

		name = n;
		age = a;
	}
public Student(){
	this("张三",18);//调用上面的构造方法
	}