ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初识面向对象

2021-07-24 14:35:54  阅读:113  来源: 互联网

标签:String int 面向对象 初识 Student hobby public name


1.万物皆对象

万物皆对象是指我们可以将任何的事物都分析出属性和行为,理解为对象

2.类和对象的关系

类是对象的抽象,对象是类的具体。
由类衍生出对象

3.属性和方法

属性:一些事物共有的特征,称之为属性
方法:一些事物共有的动作,称之为方法

4.创建类和对象

package com.qfedu.test2;
/**
* 学生类
* 属性:姓名、性别、学号、爱好……
* 方法:学习、吃饭、睡觉
* @author Admin
*
*/
public class Student {
   String name;
   char sex;
   String stuNo;
   String hobby;
   
   public void stduy() {
   	System.out.println("学生喜欢学习");
   }
   public void eat() {
   	System.out.println("学生喜欢吃饭");
   }
   public void sleep() {
   	System.out.println("学生喜欢睡觉");
   }
   
   public static void main(String[] args) {
   	Student stu1 = new Student();
   	stu1.name = "张三";
   	stu1.sex = '男';
   	stu1.stuNo = "aa111";
   	stu1.hobby = "学习";
   	
   	System.out.println("姓名:"+stu1.name);
   	System.out.println("性别:"+stu1.sex);
   	System.out.println("学号:"+stu1.stuNo);
   	System.out.println("爱好:"+stu1.hobby);
   	
   	stu1.stduy();
   	stu1.eat();
   	stu1.sleep();
   	System.out.println("------------------");
   	Student stu2 = new Student();
   	stu2.name = "李四";
   	stu2.sex = '男';
   	stu2.stuNo = "bb222";
   	stu2.hobby = "吃饭";
   	
   	System.out.println("姓名:"+stu2.name);
   	System.out.println("性别:"+stu2.sex);
   	System.out.println("学号:"+stu2.stuNo);
   	System.out.println("爱好:"+stu2.hobby);
   	
   	stu2.stduy();
   	stu2.eat();
   	stu2.sleep();
   }
}

打印详细的信息,将属性使用到方法中

package com.qfedu.test3;
/**
 * 学生类
 * 属性:姓名、性别、学号、爱好……
 * 方法:学习、吃饭、睡觉
 * @author Admin
 *
 */
public class Student {
	String name;
	char sex;
	String stuNo;
	String hobby;
	
	public void stduy() {
		System.out.println("学生喜欢学习");
	}
	public void eat() {
		System.out.println("学生喜欢吃饭");
	}
	public void sleep() {
		System.out.println("学生喜欢睡觉");
	}
	public void introduce() {
		System.out.println("我的名字叫"+name+",性别是"+sex+",学号是"+stuNo+",爱好是"+hobby);
	}
	public static void main(String[] args) {
		Student stu1 = new Student();
		stu1.name = "张三";
		stu1.sex = '男';
		stu1.stuNo = "aa111";
		stu1.hobby = "学习";
		stu1.introduce();
		
		System.out.println("-------------------------------------");
		Student stu2 = new Student();
		stu2.name = "李四";
		stu2.sex = '男';
		stu2.stuNo = "bb222";
		stu2.hobby = "吃饭";
		stu2.introduce();
		
	}
}

4.实例变量与局部变量的区别

实例变量 局部变量
定义位置 类中
作用范围 整个类中
默认值 有默认值,与数组相同
重名 可以与局部变量重名,局部变量优先使用,就近原则
生命周期 随着对象的创建而存在,随着对象被垃圾回收而死亡
存储位置 实例变量存储在堆中

5.方法重载

1.在一个类中
2.方法名称相同
3.参数列表不同,包括参数的个数、类型、顺序,有一个不同即可称为不同
4.跟返回值、访问权限修饰符无关

public class Test1 {
	
	public int add(int a ,String str) {
		return 1;
	}
	
	public int add(String str , int a) {
		return 0;
	}
	
	public int add(int a,int b) {
		return a + b;
	}
	
	public int add(int a,int b,int c) {
		return a + b + c;
	}
	
	public int add(int a,int b,int c,int d) {
		return a + b + c + d;
	}
	
	public int add(int a,int b,int c,int d,int e) {
		return a + b + c + d + e;
	}
	
	
	public int add(int a,int b,int c,int d,int e,int f) {
		return a + b + c + d + e + f;
	}
	
	public static void main(String[] args) {
		Test1 t1 = new Test1();
		t1.add(10, 20, 30);
		System.out.println(t1.add(10, 20));
	}
	
}

6.构造方法

6.1概念

构造创建,用于创建对象的特色方法,只能在创建对象时调用,且默认调用无参构造
构造方法书写格式:访问修饰符 + 类名(形参列表){}
普通方法书写格式:访问修饰符 + 返回值类型 + 方法名称(形参列表){}

6.2无参构造

无参构造是默认存在,不管是否书写都有

public class Student {
	String name;
	int age;
	String gradeName;
	String hobby;
	
	public void print() {
		System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
	}
	
	public Student() {
		System.out.println("Student类无参构造执行了");
	}
	
	public static void main(String[] args) {
		Student stu1 = new Student();
		stu1.name = "赵四";
		stu1.age = 17;
		stu1.gradeName = "三年二班";
		stu1.hobby = "尬舞";
	}
	
}

6.3有参构造

我们在创建对象的同时,可以给属性赋值,使用有参构造
无参构造是默认存在,如果书写了有参构造,那么默认的无参将被覆盖

public class Student {
	String name;
	int age;
	String gradeName;
	String hobby;
	
	public void print() {
		System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
	}
	
	public Student() {
		System.out.println("Student类无参构造执行了");
	}
	
	public Student(String n,int a,String gname,String h) {
		name = n;
		age = a;
		gradeName = gname;
		hobby = h;
	}
	public Student(int a) {
		age = a;
	}
	
	public Student(String n,int a) {
		name = n;
		age = a;
	}

	public Student(int a,String n) {
		name = n;
		age = a;
	}
	public static void main(String[] args) {
		Student stu3 = new Student(20, "大拿");
		stu3.gradeName = "三年二班";
		stu3.hobby = "理财";
		stu3.print();
		
		Student stu2 = new Student("广坤", 15, "三年二班", "口技");
		stu2.print();
	}
	
}

6.4构造方法重载

与普通方法重载规则类似
构造方法都是类名,没有返回值,与访问权限无关,所以只要求参数列表不同(参数的个数、类型、顺序)。

7.this关键字

this关键字表示当前对象
适用场景:
1.访问属性
2.访问方法
3.访问构造方法,this访问构造方法必须在其他构造方法中第一句,只能使用一次

public class Student {
	String name;
	int age;
	String gradeName;
	String hobby;
	
	public void printName() {
		System.out.println("名字是" + name);
	}
	
	public void printAge() {
		System.out.println("年龄是" + age);
	}
	public void print() {
		printName();
		printAge();
		System.out.println("年龄" + age + ",爱好" + hobby + ",班级" + gradeName);
	}
	/**
	 * 	回顾之前写的构造方法 名称书写不规范 不符合见名知意的规则 所以我们将参数名称修改
	 * 	修改完以后 发现不能正常赋值了 因为使用的都是局部变量
	 * @param name
	 * @param age
	 * @param hobby
	 * @param gradeName
	 */
	public Student(String name,int age,String hobby,String gradeName) {
		// this.name = name;
		// this(name);
		// this.age = age;
		// this(name, age);
		// this.hobby = hobby;
		this(name, age, hobby);
		this.gradeName = gradeName;
	}
	
	public Student(String name,int age,String hobby) {
		this(name, age);
		this.hobby = hobby;
	}
	
	public Student(String name,int age) {
		this(name);
		this.age = age;
	}
	
	
	public Student(String name) {
		this.name = name;
	}
	public Student() {}
	
	public static void main(String[] args) {
		Student stu1 = new Student("赵四",17,"尬舞","三年二班");
		stu1.print();
	}
	
}

标签:String,int,面向对象,初识,Student,hobby,public,name
来源: https://www.cnblogs.com/xjl920912/p/15055086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有