Java系列之面向对象基础

版权声明


面向对象

what?面向对象?什么对象?何为对象?在这里各位同学可能再这里就有点懵逼了,不要慌,小场面,看完本篇你应该会有所了解。
那什么是对象呢?对象即独立的个体,拥有独立的属性,具有不同的行为,世界就是由许多个独立的个体组成的,这也就是所谓的万物皆对象
例如
一个班级里的每一个同学都是一个个对象。
一个机房里每一台电脑都是一个对象等。
我们生活中处处存在对象,就等你去了解。
学生所拥有的学号,名字;电脑所拥有的mac地址。这就是他们的属性(对象的属性)
学生能干什么;电脑能干什么。这就是他们的行为(方法)即(对象的方法)

有图有真相
在这里插入图片描述
面向对象编程 : 可以理解为举办一场活动,细化到每一个人,哪一个人干什么事,然后每个人干完自己要干完的事,这场活动也就举办好了。
面向对象的思想: 把一个复杂的事情给分化,分发给每一个人(每个对象),由他们自己去做,不用管他怎么做,只需要结果就行。
面向对象的三大特征封装继承多态
面向对象的三大特征后面博文会学到。


什么是类?类就是某些对象具有的相同特性,把相同特性抽取出来,这就出现了类。也就是说类是描述了这些对象的相同特性。类就是创造事物的模板,我们可以根据这个模板创造出许多事物。

有图有真相
在这里插入图片描述
那么如何创建对象呢?
首先我们定义一个Java实体类

public class Student {
	/**
	 * 定义两个成员变量 name,gender
	 */
	private String name;
	private String gender;
	
	/**
	 * 定义两个构造方法
	 */
	public Student() {
		
	}
	public Student(String name, String gender) {
		super();
		this.name = name;
		this.gender = gender;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", gender=" + gender + "]";
	}
	
	
}

再定义一个测试类TestStudent,在main方法里创建对象

public class TestStudent {

	public static void main(String[] args)  {
		/**
		 * 两种写法,一种分句写,一种不分句
		 * 都需要使用new关键字
		 * 先声明一个Student类型变量
		 * 然后通过构造方法创建实例
		 * 再把实例赋值给变量,就有了student对象了
		 */
		//分句
		Student student1;
		student1=new Student();
		//不分句
		Student student2 = new Student();
		System.out.println("student1:"+student1);
		System.out.println("student2:"+student2);
		
		/**
		 * 上面两个对象都是空对象,为给属性赋值
		 * 接下来,我们给属性赋值就不是空了
		 */
		System.out.println("分割线://");
		student1.setName("ew");
		student1.setGender("男");
		System.out.println("student1:"+student1);
	}

}

结果:
在这里插入图片描述


抽象

抽象方法是面向对象的最基本的方法,也是最重要的方法之一
类的形成就是抽象,抽象就是把一系列的对象实例的共同特性抽取的过程,它强调主要特征,忽略次要特征
一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象


变量

变量又分为成员变量(全局变量)以及局部变量。那么问题来了,什么是成员变量,什么是局部变量。
成员变量以及局部变量的区别:
1.范围

  • 成员变量在其整个类里都是有效的
  • 局部变量只在声明其的方法内有效

2.生命周期

  • 成员变量的生命周期与对象一致
  • 局部变量的生命周期为使用完就被回收

3.存储位置

  • 成员变量是属于对象的,对象存储在堆内存里,那么它也在堆里
  • 局部变量是存储在栈里的,当不被使用就会被回收掉

4.初始值

  • 成员变量如果没有被初始化值,那它的默认值为变量的默认值
  • 局部变量如果要使用必须手动初始话值,否则无法使用
package com.ew;

public class Student {
	/**
	 * 定义两个成员变量 name,gender
	 */
	private String name;  
	private String gender;
	
	
	public void run() {
		//局部变量
		String study="学习编程语言"; 
		System.out.println("计科系会"+study);
	}
	/**
	 * 定义两个构造方法
	 */
	public Student() {
		
	}
	public Student(String name, String gender) {
		this.name = name;
		this.gender = gender;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", gender=" + gender + "]";
	}
	
	
}

实现类

package com.ew;

public class TestStudent {

	public static void main(String[] args)  {
		//使用构造方法注入属性
		Student student=new Student("ew", "18");
		System.out.println(student);
		student.run();
	}

}

结果:
在这里插入图片描述

匿名对象

匿名对象顾名思义就是没有名字的对象,即该对象没有对应的变量名引用。通常的用途当对象只需要使用一次方法时使用或者当实参传入时,从而简化代码。为什么不调用属性,因为那样毫无意义。经匿名对象设置的属性永远无法获取,任何两个匿名对象做==比较,都是false。

package com.ew;

public class TestStudent {

	public static void main(String[] args)  {
	    TestStudent student=new TestStudent();
	    //不使用匿名对象
	    Student s=new Student("ewcc", "18");
		student.test(s);
		//使用匿名对象
		student.test(new Student("ew", "18"));
		
	}
	public void test(Student s) {
		System.out.println(s+"他会学习");
	}
}

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值