day10 初识面向对象

1. 万物皆对象

万物皆对象是指可以将自然界中的任何事物都理解为一个对象。分析其共有的特征,称之为属性;分析其共有的行为,称之为方法。

类是由属性和方法组成的。

类是对象的抽象,对象是类 的具体。

package com.qfedu.test1;
/**
 * 	学生类
 * 	类的组成包括:属性和方法
 * 	属性:一组对象共同拥有的特征,称之为属性
 * 	方法:一组对象共同拥有的行为,称之为方法
 * 
 * 	属性:
 * 		姓名
 * 		年龄
 * 		学号
 * 		性别
 * 		身高
 * 		班级
 * 		体重
 * 		专业
 * 		……
 * 
 * 	行为:
 * 		学习
 * 		吃饭
 * 		睡觉
 * 		打游戏
 * 		……
 * 	
 * @author WHD
 *
 */
public class Student {
	String name;
	int age;
	String  studentNo;
	char sex;
	double height;
	String gradeName;
	double weight;
	String profession;
	
	public void study() {
		System.out.println("努力学习");
	}
	
	public void eat() {
		System.out.println("吃饭");
	}
	
	public void sleep() {
		System.out.println("睡觉");
	}
	
	public void playGame() {
		System.out.println("打游戏");
	}
	
	
}

3.创建和使用对象

package com.qfedu.test2;
/**
 * 	学生类
 * 	类和对象的关系:类的对象的抽象,对象是类的具体
 * 	类的组成包括:属性和方法
 * 	属性:一组对象共同拥有的特征,称之为属性
 * 	方法:一组对象共同拥有的行为,称之为方法
 * 
 * 	属性:
 * 		姓名
 * 		年龄
 * 		学号
 * 		性别
 * 		身高
 * 		班级
 * 		体重
 * 		专业
 * 		……
 * 
 * 	行为:
 * 		学习
 * 		吃饭
 * 		睡觉
 * 		打游戏
 * 		……
 * 	
 * @author WHD
 *
 */
public class Student {
	String name;
	int age;
	String  studentNo;
	char sex;
	double height;
	String gradeName;
	double weight;
	String profession;
	
	public  void study() {
		System.out.println(name + "努力学习");
	}
	
	public void eat() {
		System.out.println(name + "在吃饭");
	}
	
	public void sleep() {
		System.out.println(name + "在睡觉");
	}
	
	public void playGame() {
		System.out.println(name + "在打游戏");
	}
	
	public void printInfo() {
		System.out.println("我的名字是:" + name);
		System.out.println("我的年龄是:" + age);
		System.out.println("我的身高是:" + height);
		System.out.println("我的体重是:" + weight);
		System.out.println("我的学号是:" + studentNo);
		System.out.println("我的性别是:" + sex);
		System.out.println("我的专业是:" + profession);
		System.out.println("我的班级是:" + gradeName);
	}
	public static void main(String[] args) {
		// 1.先new对象   类名 对象名 =  new 类名();
		Student stu1 = new Student();
		
		// 2.通过对象名.属性名  对属性赋值
		stu1.name = "赵四";
		stu1.age = 18;
		stu1.height = 180.5;
		stu1.sex = '男';
		stu1.studentNo = "zz0001";
		stu1.profession = "形体艺术";
		stu1.gradeName = "三年二班";
		stu1.weight = 70;

		// 3.通过对象名.方法名 访问对象的行为 (方法)
		stu1.study();
		stu1.sleep();
		stu1.eat();
		stu1.playGame();
		
		stu1.printInfo();
		
		System.out.println("----------------------------------------");
		
		Student stu2 = new Student();
		stu2.name = "广坤";
		stu2.age = 20;
		stu2.height = 175;
		stu2.profession = "语言艺术";
		stu2.sex = '男';
		stu2.gradeName = "三年二班";
		stu2.weight = 65;
		stu2.studentNo =  "zz0002";
		
		stu2.study();
		stu2.sleep();
		stu2.playGame();
		stu2.eat();
		stu2.printInfo();
		
	}

}

4.实例变量

实例变量,也叫成员变量,也叫属性

描述实例变量局部变量
定义位置直接写在类中方法中
默认值默认值与数组相同没有默认值
作用范围整个类中离当前变量最近的大括号以内
命名冲突可以与局部变量重名,就近原则重合的作用范围,不能重名
存储位置全部存储在堆中,所以才有默认值基本数据类型,存在栈中;引用数据类型,名字在栈,值在堆中
生命周期随着创建对象而生效,随着对象被垃圾回收而死亡随着方法的入栈而生效,随着方法的出栈而死亡

5. 方法重载

方法重载:

1.同一个类中

2.方法名称相同,

3.参数列表不同(包括参数的个数、类型、顺序有一个不同即可称之为不同),

<访问修饰符,返回值是否相同不作为方法重载的参考条件>

这种情况,称之为方法重载

调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法。 好处:屏蔽使用差异,灵活、方便。

package com.qfedu.test4;

import java.util.Arrays;

/**
 * 	方法重载:
 * 	1.同一个类中
 * 	2.方法名称相同,
 * 	3.参数列表不同(包括参数的个数、类型、顺序有一个不同即可称之为不同),
 * 	<返回值是否相同不作为方法重载的参考条件>
 * 	这种情况,称之为方法重载
 * @author WHD
 *
 */
public class Calc {
	
//	public void add(int a,String s) {
//		
//	}
	
	public void add(int num,String str) {
		
	}
	
	public int add(String str,int num) {
		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 static void main(String[] args) {
		Calc calc = new Calc();
		calc.add(10, 20);
		calc.add(10, 20, 30);
		calc.add("a", 20);
	}

}

6. 构造方法

构造方法:用于创建对象的特殊方法

构造方法语法:访问修饰符(public) + 类名(形参列表){}

普通方法语法:访问修饰符(public) + 返回值类型 + 方法名(形参列表){}

无参构造,JVM默认提供。如果书写了有参构造,那么无参构造将会被覆盖,想要使用,手动书写。

构造方法重载规则与方法重载一致,只有一条要求,参数列表不同。

package com.qfedu.test6;
/**
 * 	名字
 * 	年龄
 * 	性别
 * 
 * 	无参构造,JVM默认提供。如果书写了有参构造,那么无参构造将会被覆盖,想要使用,手动书写。
 * 	构造方法重载规则与方法重载一致,只有一条要求,参数列表不同。
 * @author WHD
 *
 */
public class Person {
	String name;
	int age;
	String sex;
	
	public void printInfo() {
		System.out.println("名字是:" + name + ",年龄:" + age + ",性别是:" + sex);
	}
	
	public Person(String n,int a,String s) {
		System.out.println("全参构造方法1");
		sex = s;
		age = a;
		name = n;
	}
	
	public Person(int a,String s,String n) {
		System.out.println("全参构造方法2");
		sex = s;
		age = a;
		name = n;
	}
	
	
	
	public Person() {}
	
	public static void main(String[] args) {
		Person p1 = new Person();
		p1.name = "赵四";
		p1.age = 20;
		p1.sex = "男";
		
		p1.printInfo();
		System.out.println("--------------------------");
		Person p2 = new Person("大拿", 20,"男");
		p2.printInfo();
		
		System.out.println("--------------------------");
		Person p3 = new Person(20, "男", "小宝");
		p3.printInfo();
			
	}
}

请雅清同学过目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值