JavaSE(六)--面向对象

这篇博客主要介绍了Java的面向对象特性,包括类、对象、构造方法和this关键字的使用。讲解了如何声明和创建对象,成员变量与局部变量的区别,以及构造方法在对象创建过程中的作用。内容涵盖类的声明、属性与方法、对象创建、构造方法的语法及其重要性,以及this关键字在调用属性和方法时的应用。
摘要由CSDN通过智能技术生成

1.面向过程

  • 将一件分成若干步骤,自己一步一步亲力亲为去完成.解决简单问题.
  • 面向对象:将做一件事所有参与者找出事业,自己调用这些参与协同将这件事完成.解决复杂问题.
  • 面向过程和面向对象是一种相辅相成,互为补充的关系.
   我要吃小龙虾
   面向过程:自己去超市买龙虾,自己清洗龙虾,自己做龙虾,自己剥壳,自己吃,自己收拾好.
   面向对象:自己点龙虾外卖,收到外卖吃,吃完后发动室友去收拾好.

2.三大特性

Java是一种纯面向对象的语言.面向对象语言都有三大特性:封装,继承,多态.

3.对象

用来描述客观事实的一个实体.(能用具体数据描述)
类:由一组相同属性和方法组成的对象的集合.
属性:对象的静态特征.
方法:对象的动态特征.
类是对象抽象,类是对象模板,类是对象的数据类型;对象是类的典型代表,对象是类的具体实例.

4.类

java是以类来组织代码,类是java的最小单位.类也是一种数据类型.

4.1:声明类的语法:

		访问修饰符 [扩展修饰符] class 类名{
			访问修饰符 数据类型 属性名1;//成员变量
			访问修饰符 数据类型 属性名2;
			...
			访问修饰符 [扩展修饰符] 返回值类型 方法名(形参列表){
				方法体;
				[return 结果;]
			}
			...
		}

4.2:声明类的关键字:class

  • 一个类可以有0个到多个属性.我们在声明类时,只写与研究问题相关的属性.
  • 一个类可以有0个到多个方法.我们在声明类时,只写与研究问题相关的方法.
  • 类名采用帕斯卡命名法,属性名和方法名采用驼峰式命名法.
  • 类的访问修饰符一般用public或default(不写修饰符),用public修饰的类名要与java的源文件名相同.
  • 一个类可以创建无数个对象,每个对象都独有一份属性.

4.3:类中属性

也叫成员变量,不赋初值,系统会给它赋默认值

String类型属性,默认值是null
int类型属性,默认值是0
double类型属性,默认值是0.0
char类型属性,默认值是/u0000
boolean类型属性,默认值是false

	eg:/**
 * 学生类
 */
public class Student {
	/**
	 * 姓名属性
	 */
	public String studentName;
	/**
	 * 年龄属性
	 */
	public int studentAge;
	
	/**
	 * 敲代码的方法
	 */
	public void printCode() {
		System.out.println("正在敲代码...");
	}
}

5.创建对象:

5.1:创建对象的语法:

  • 类名 对象名=new 类名();
    理解:站在面向对象角度来理解:由类生成对象
    站在变量角度来理解:类名就是一种数据类型,对象名就是变量名.
    注意: 对象名采用驼峰式命名法.

5.2:调用属性:

在同一个类中调用:属性名
在不同的类中调用:对象名.属性名

5.3:调用方法:

  • 在同一个类中调用:方法名(实参列表);
    数据类型 变量名=方法名(实参列表);
  • 在不同的类中调用:对象名.方法名(实参列表);
    数据类型 变量名=对象名.方法名(实参列表);
	eg:public static void main(String[] args) {
		//由类生成对象
		Student stu1=new Student();
		//用对象调用属性,并赋值
//		stu1.studentName="张三";
//		stu1.studentAge=18;
		
		//用对象调用属性并输出
		System.out.println("姓名:"+stu1.studentName+",年龄为:"+stu1.studentAge);
		
		//由类生成对象
		Student stu2=new Student();
		//用对象调用属性,并赋值
		stu2.studentName="李四";
		stu2.studentAge=22;
		
		//用对象调用属性并输出
		System.out.println("姓名:"+stu2.studentName+",年龄为:"+stu2.studentAge);
		
		//用对象调用方法
		stu2.printCode();
	}

6.成员变量 VS 局部变量

在同一个作用范围内不能取相同变量名.

  • 1:声明位置不同:成员变量在类中直接声明;局部变量在方法中声明;
  • 2:初值不同:成员变量如果不赋初值,系统会默认赋初值;局部变量如果不赋初值,系统不会给它赋初值.
  • 3:作用域不同:成员变量作用域由访问修饰符决定;局部变量的作用域在声明大括号内.
  • 4:生命周期不同:成员变量的生命由对象创建而生,由对象的销毁而结束;局部变量的生成周期在声明大括号执行时而生,大括号执行就结束.
  • 5:在内存中位置不同:成员变量存放在内存的堆中;局部变量存放在内存的栈中.
  • 6:访问修饰符不同:成员变量一定有访问修饰符(不写就是default修饰符);局部变量不可以用访问修饰符.
  • 7:优先级不同:如果在同一个类中,成员变量和局部变量同名时,局部变量的优先级更高.

7.构造方法

是一种特殊的方法.

7.1:构造方法的语法

	访问修饰符 方法名(形参列表){
			 方法体
	 }

7.2:构造方法的方法名与类名相同.

7.3:无参构造

  • 对于一个类来说,如果不显式声明构造方法,系统会给这个类分配一个默认无参构造方法.
  • 如果显式声明构造方法,系统不会再给这个类分配构造方法.

7.4:构造方法的作用

创建对象或在创建对象的同时给属性赋值.

7.5:构造方法是在创建对象必须调用.

7.6:一个对象一生只能调用一次构造方法.

//eg:/**
 * 猫类
 */
public class Cat {
	/**
	 * 昵称
	 */
	public String cname;
	/**
	 * 性别
	 */
	public char sex;
	
	/**
	 * 无参构造
	 */
	public Cat() {
		System.out.println("这是猫类的一个无参构造方法");
	}

	/**
	 * 全参构造
	 * @param cname
	 * @param sex
	 */
	public Cat(String cname, char sex) {
		System.out.println("这是猫类的一个全参构造方法");
		this.cname = cname;
		this.sex = sex;
	}
}
/**
 * 构造方法测试
 */
public class CatTest {
	public static void main(String[] args) {
		int num=11;
		//调用无参构造方法创建对象
		Cat c1=new Cat();
		//调用全参构造方法创建对象
		Cat c2=new Cat("小花", '母');
		
		System.out.println(c2.cname);
	}
}

8.this

指代当前对象的引用(谁调用就指代谁).

  • 1:this可以调用当前类中对象的属性:this.属性名;//可以省略this
  • 2:this可以调用当前类中对象的方法:this.方法名();//可以省略this
  • 3:this在构造方法中,当方法形参名与属性名相同时,this不可以省略,
    用this调用的是属性.
  • 4:this调用当前类构造方法的语法:this([实参列表]);
    注意: 用this调用构造方法时,只能写在构造方法的第一句.
//eg:/**
 * 猫类
 */
public class Cat {
	/**
	 * 昵称
	 */
	public String cname;
	/**
	 * 性别
	 */
	public char sex;
	
	/**
	 * 无参构造
	 */
	public Cat() {
		System.out.println("这是猫类的一个无参构造方法");
	}

	/**
	 * 全参构造
	 */
	public Cat(String cname, char sex) {
		this();//调用当前这个类中无参构造
		System.out.println("这是猫类的一个全参构造方法");
		//在构造方法中,当方法形参名与属性名相同时,this不可以省略,用this调用的是属性
		this.cname = cname;
		this.sex = sex;
	}
	
	public void show() {
		//用this调用当前对象属性,this可以省略
		System.out.println("猫的昵称为:"+this.cname);
	}
	
	public void show2() {
		//用this调用当前对象方法,this可以省略
		show();
	}
}

9.名词解释:
测试类:包含main()类可以称为测试类.
初始化:给变量开辟空间或赋值.

个人笔记,思路,仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值