Java基础_8类-对象-构造方法【重点】

今天的内容

1.类和对象

2.构造方法【重点】

1.面向过程和面向对象的编程思想

两种编程思想:

​ 面向过程: 写的冒泡排序 选择排序都是面向过程

​ 面向对象: Arrays.sort(arr)

2.面向对象的两个概念

类: 是对一起相似事物的统称。是一个泛泛的概念。

​ 可以用来描述事物的特征和行为。

对象: 就是一个具体的实体。是真实存在的 。是靠类来衍生出来。

特征: 就是一类事物的属性,比如 人的年龄  身高 体重   等  是静的
行为: 就是动作  比如 吃饭  睡觉  打豆豆 等  是动的
类:
	属性:在Java中使用变量描述属性
	行为:在Java中使用方法描述行为

3.声明一个类

语法格式:

[public] class  类名 {
	属性1;
	属性2;
	
	方法1;
	方法2;
}
package com.qf.a_test;

public class Person {
	/**
	 * 人类:
	 * 		属性:  Java中用变量来表示属性  int a = 20;
	 * 			姓名   年龄 性别  身高  
	 * 		行为:  Java中用方法表示行为
	 * 			吃  喝  
	 */
	//类下面的属性  不需要赋值的会给默认值的
	String name;//默认值null
	int age;//默认值0
	char sex;//char 类型是一个单一的 16 位 Unicode 字符;
	//最小值是 '\u0000'(十进制等效值为 0);
	double height;
	
	
	//吃行为
	public void  eat ()  {
		System.out.println("吃饭饭");
	}
	
	//喝的行文
	public void drink () {
		System.out.println("喝酒酒");
	}
}

练习:

​ 狗类:

​ 属性:名字 毛色 性别

​ 行为: 打架 看家

package com.qf.a_test;

public class Dog {
	/**
	 * 名字    毛色 性别
	 */
	String name;
	String color;
	char sex;
	
	//行为 看家的方法
	public  void  lookHome () {
		System.out.println("狗汪汪叫看家");
	}
	//打架的方法
	public  void fight () {
		System.out.println("狗咬狗,一嘴毛");
	}
	
}

package com.qf.a_test;

public class Pig {
	String name;//名字
	int age;//年龄
	double weight;//体重
	
	//行为   睡觉
	public void sleep () {
		System.out.println("一般都是在睡觉");
	}
	//行为  上树
	public void upTree () {
		System.out.println("猪会上树");
	}
}

4.创建对象

一个类声明好以后,你不用它,就一直存在。但是类是用衍生出来对象的。

先有类才有对象

对象的创建在main函数中创建

创建对象的语法格式:

类名  对象名字 = new  类名();
package com.qf.a_test;

//带有main主函数的叫主类
public class Demo1 {
	public static void main(String[] args) {
		//语法格式:  类名 对象的名字 = new  类名();
		Person person = new Person();
		//创建对象以后有啥用?
		//对 咱们person这个对象 进行赋值操作
		//将狗蛋 赋值给这个人(person)的(.)名字(name)  
		person.name = "狗蛋";
		person.age = 12;
		person.sex = '男';
		person.height = 168.89;
		
		//以上在赋值
		//以下在取值
		System.out.println(person.name);//获取 person对象的名字
		System.out.println(person.age);//获取 person对象的年龄
		System.out.println(person.sex);
		System.out.println(person.height);
		System.out.println("=================");
		Person person1 = new Person();
		person1.name = "张三";
		person1.age = 34;
		person1.sex = '女';
		person1.height= 189.78;
		System.out.println(person1.name);//获取 person对象的名字
		System.out.println(person1.age);//获取 person对象的年龄
		System.out.println(person1.sex);
		System.out.println(person1.height);
		
		
		//类中还有方法
		//对象.方法名字
		person.eat();
		person.drink();
		
		//属性在赋值     对象.属性 = 值;
		//方法在调用     对象.方法()
		
	}
}

练习:

​ 咱们上节课已经写过一个狗类,然后通过这个狗类创建(实例化)一个对象。对对象的属性

进行赋值,然后对象调用方法!!!

package com.qf.a_test;

import java.util.Scanner;

//Demo2 是主类
public class Demo2 {
	public static void main(String[] args) {
		//语法格式 类名 对象名字 = new  类名();
		Dog dog1 = new Dog();
		dog1.name = "旺财";
		dog1.color = "黄色";
		dog1.sex = '公';
		System.out.println("这条的名字是:"+dog1.name + ",他的性别是:" + dog1.sex+ ",他的颜色是:" + dog1.color);
		//方法的调用
		dog1.fight();
		dog1.lookHome();
	}
}

总结:

1.先新建一个类  Pig  写属性和方法
2.再新建另外一个主类  Demo2
3.在main主函数中创建对象
4.拿对象对属性进行赋值   拿对象调用方法

5.实体类和主类可以写在一个文件中

但是大家想一个问题?两个类。那么文件的名字用主类来命名

package com.qf.a_test;

//The public type Monkey must be defined in its own file
//class的前面不要再加public 了   当主类和实体类写在一起的时候
 class Monkey {
	 //属性
	String name;
	int age;
	char sex;
	
	//行为
	public void touTao () {
		System.out.println("猴子偷桃");
	}
}
public class Demo4 {
	
	public static void main(String[] args) {
		Monkey monkey = new Monkey();
		monkey.name = "孙悟空";
		monkey.age = 89;
		monkey.sex = '公';
		System.out.println("这个候叫:" + monkey.name + ":" + monkey.age + ":" + monkey.sex);
		 monkey.touTao();
	}
}

回顾上午的内容

1.声明一个类
	class Dog {//声明了狗类
		String name;
		int age;
		double weight;
		
		public void eat () {
			System.out.println("吃饭");
		}
	}
2.创建对象
	class Demo1 {//主类    main主函数的叫主类
		public  static void main (String[] args) {
			Dog dog  = new Dog();//对象的创建   又叫实例化对象
			dog.name = "牛彩云";
			dog.age = 2;
			dog.weight = 78.9;
			sout(dog.name);
			//调用狗对象的行为  吃饭
			dog.eat();
		}
	}

6.构造方法【重点】

构造方法是用来初始化对象的!!!

对象的出来和构造方法有关

无参构造方法和有参构造方法

6.1无参构造方法

语法格式:

public 类名() {
	
}
package com.qf.b_test;

//实体类 女朋友类
class GirlFriend {
	//属性
	String name;
	int age;
	//构造方法一般书写在属性的下面 方法的上面
	//在new 对象的时候 无参构造方法被调用了
	public  GirlFriend () {//无参的构造方法
		System.out.println("嘻嘻来啊");
	}
	//方法
	public void eat () {
		System.out.println("吃饭");
	}
	
}

//主类
public class Demo1 {
	public static void main(String[] args) {
		GirlFriend girlFriend = new GirlFriend();
		
	}
}

package com.qf.b_test;

//实体类 女朋友类
class GirlFriend {
	//属性
	String name;
	int age;
	//构造方法一般书写在属性的下面 方法的上面
	//在new 对象的时候 无参构造方法被调用了
	public  GirlFriend () {//无参的构造方法
		System.out.println("嘻嘻来啊");
		//this代表的是当前对象  这个
		this.name = "刘亦菲";
		this.age = 18;
		//com.qf.b_test.GirlFriend@15db9742
		System.out.println("构造方法中的:" + this);
	}
	//方法
	public void eat () {
		
		System.out.println("吃饭");
	}	
}
//主类
public class Demo1 {
	public static void main(String[] args) {
		GirlFriend girlFriend = new GirlFriend();
		//com.qf.b_test.GirlFriend@15db9742
		System.out.println("main:"+girlFriend );
//		girlFriend.name = "迪丽热巴";
//		girlFriend.age = 34;
		System.out.println(girlFriend.name);
		System.out.println(girlFriend.age);
		
		
		System.out.println("=======");
		GirlFriend girlFriend1 = new GirlFriend();
		System.out.println("girg11111:"+girlFriend1);
		
		
		
		
	}
}

真实开发的时候

class BoyFriend {
	String name;
	int age;
	
	public BoyFriend () {
		
	}
}
6.2有参的构造方法

语法格式:

public 类名(参数) {

}
package com.qf.b_test;

class BoyFriend {
	String name;
	int age;
	//任何一个类都有一个默认的无参构造方法
	
	//当在一个类中声明了一个有参构造方法,默认的无参构造方法就不存了。
	public BoyFriend(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public BoyFriend () {
	}
	
	//有参构造方法,是一个参数
	public BoyFriend (int age) {
		this.age = age;
	}
	public BoyFriend (String name) {
		this.name = name;
	}
}
public class Demo2 {
	public static void main(String[] args) {
		
		BoyFriend boyFriend = new BoyFriend("狗蛋", 23);
		System.out.println(boyFriend.name);//狗蛋
		System.out.println(boyFriend.age);//19
		//在使用下面方式创建对象的时候 一定写一个无参的构造方法 才不会报错!!!
		BoyFriend boyFriend2 = new BoyFriend();
		
		//构造方法和创建对象是息息相关的
		BoyFriend boyFriend3 = new BoyFriend(13);
		BoyFriend boyFriend4 = new BoyFriend("张三");
		
	}
}

package com.qf.b_test;

class People {
	String name;
	int age;
	
	public People () {
	}
	public People (String name, int age) {
		this.name = name;
		this.age = age;
	}
}
public class Demo3 {
	public static void main(String[] args) {
		People people = new People();
		System.out.println(people.name);//null
		System.out.println(people.age);//0
		People people1 = new People("goudan", 29);
		System.out.println(people1.name);//goudan
		System.out.println(people1.age);//29
		
	}
}

练习:

猫类:

​ 属性: 名字 年龄 性别

​ 构造方法: 无参构造方法和有参构造

​ 行为: 抓老鼠

package com.qf.b_test;

class Cat {
	String name;//名字
	int age;//年龄
	char sex;//性别
	
	public Cat () {
		
	}
	public Cat (String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	//抓老鼠
	public void catchMouse () {
		System.out.println("猫抓老鼠可牛了");
	}
}
public class Demo4 {
	public static void main(String[] args) {
		Cat cat = new Cat();//因为上面类中有一个无参的构造方法,所以才没有报错
		//对属性进行赋值
		cat.name = "大黄";
		cat.age = 12;
		System.out.println(cat.name);
		System.out.println(cat.age);
		cat.catchMouse();
		
		System.out.println("============");
		Cat cat1 = new Cat("加菲", 4);
		System.out.println(cat1.name);
		System.out.println(cat1.age);
		cat1.catchMouse();
		
		
	}
}

7.对象的内存分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8.构造代码块【了解】

现在开发已经不用了

构造i代码块:也是对对象进行初始化的,功能和构造方法是一样的。

语法格式:

{
	语句体
}
package com.qf.b_test;

class Tiger {
	String name;
	int age;

	// 构造代码块
	{
		System.out.println("Tiger的构造i代码块");
		this.name = "狗蛋";
		this.age = 23;
	}

	// 无参构造方法
	public Tiger() {
		System.out.println("Tiger的无参构造方法执行了");
		this.name = "战三";
		this.age = 12;
	}

}

public class Demo5 {
	public static void main(String[] args) {
		Tiger tiger = new Tiger();
		tiger.name = "lisi";
		tiger.age = 14;
		System.out.println(tiger.name);
		System.out.println(tiger.age);
	}
}

作业:

1.十二生肖 写在同一个文件中和主类
 属性自己想
 方法也自己想
 无参和有参构造方法(对属性进行赋值)
 在main主函数中创建对象
2.

ckage com.qf.b_test;

class Tiger {
String name;
int age;

// 构造代码块
{
	System.out.println("Tiger的构造i代码块");
	this.name = "狗蛋";
	this.age = 23;
}

// 无参构造方法
public Tiger() {
	System.out.println("Tiger的无参构造方法执行了");
	this.name = "战三";
	this.age = 12;
}

}

public class Demo5 {
public static void main(String[] args) {
Tiger tiger = new Tiger();
tiger.name = “lisi”;
tiger.age = 14;
System.out.println(tiger.name);
System.out.println(tiger.age);
}
}


练习:

1.十二生肖 写在同一个文件中和主类
属性自己想
方法也自己想
无参和有参构造方法(对属性进行赋值)
在main主函数中创建对象
2.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值