面向对象day01(类和对象,如何创建类,如何创建对象,如何访问成员变量;方法的重载)

一、类和对象
类也是一种数据类型,是一个引用数据类型,是自己创建出来的一种引用类型

  • 对象:真实存在的,单一个体。软件中真实存在的个体
  • 类:一类个体,类型/类别,基于对象抽出了类(设计类就是为了减少重复的代码)
  • 类是对象的模子,对象是类的具体的实例
  • 类中可以包含:
    1、对象的属性/特征----------成员变量
    2、对象的行为/动作----------方法
  • 一个类中可以创建多个对象

补充:

  • 只要有对象,就要把对应的类别设计出来,哪怕对象只有一个。
  • 在潜艇游戏中,每一个对象就是每一个个体。

二、如何创建类?如何创建对象?如何访问成员?

public class Student{	//Student类就是我们自己造的一种引用数据类型.类名的命名规则遵循帕斯卡(大驼峰)原则
	//成员变量
	String name;
	int age;
	String address;
	//方法study 和	方法sayHiq
	void study(){
		System.out.println(name+"在学习...");
	}
	void sayHi(){
		System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
	}
}
public class StudentTest{
	public static void main(String[] args){
		//创建一个学生的对象
		Student zs = new Student();	
		//给成员变量赋值
		zs.name = "张三";
		zs.age = 25;
		zs.address = "河北廊坊";
		//调用方法
		zs.study();
		zs.sayHi();

		Student ls = new Student();
        ls.name = "lisi";
        ls.age = 24;
        ls.address = "黑龙江佳木斯";
        ls.study();
        ls.sayHi();
		//1)创建了一个学生的对象
		//2)给过所有的成员变量赋默认值。String的默认值为null
		Student ww = new Student();
		ww.study();
		ww.sayHi();
	
	}
}

补充:

  1. 在同一个类中,可以直接进行访问
  2. 类是一种引用数据类型,引用数据类型的赋值都要用new
  3. 只有new 出来的才是对象,若要访问对象,需要通过引用。调用方法和使用变量都要引用来打点
  4. 只要new 了,就是给所有的成员的变量赋为默认值(在对成员变量不进行初始化的前提下)原因是:new对象的时候会默认调用无参构造,构造方法时给成员变量赋初始值.
  5. 引用类型变量----简称为引用
    基本类型变量----简称为变量

三、方法的重载(overload/overloading)————更加方便用户的访问
1)发生在同一个类中,方法名相同,参数列表不同
2)编译器在编译时会根据签名自动绑定方法(方法的签名:方法名+参数列表)

//重载的演示
public class OverLoadDemo{
	public static void main(String[] args){
		Aoo o = new Aoo();
		o.show();	//编译器根据方法的签名自动绑定方法
		o.show("zhangsan");
		o.show(25);
		o.show("zhangsan",25);
		o.show(25,"zhangsan");
	}
}

class Aoo{
	void show(){}
	void show(String name){}
	void show(int age){}
	void show(String name,int age){}
	void show(int age,String name){}
	//int show(){return 1;}	编译错误,重载与返回值的类型无关
	//void show(String address){}	编译错误,重载与参数名称无关	
	
}

补充:

  1. 重载与返回值类型无关
  2. 重载与参数名称无关
  3. 重载与数据类型有关
  4. 重载与参数个数有关
  5. 重载与参数的顺序有关

在这里插入图片描述

补充:
1)在窗口进行设计时,把窗口的左上角设置为原点
2) 默认值规则:
byte,short,int,long,char-------------0
float,double-------------------------0.0
boolean------------------------------false
引用类型------------------------------null

3)以前不考虑对象,直接在main方法中写业务。现在的类是基于对象抽出来的,只充当一个类型,并不做实际的业务。相当于做月饼现在在做模具,而不是在制作月饼,不需要具体的业务
结论:凡是基于对象抽出来的类。都没有main
4)图片是像素为单位,int型。
5)方法的签名:方法名+参数列表

//若想访问对象,需要通过引用zs
            引用
数据类型  引用类型变量   指向       对象
Student     zs         =    new Student(); 

7)Phone p = new Phone();创建对象时,内存发生了什么?

在栈内存中开辟一块空间,Phone类型的引用类型变量p,把p压入栈底,此时p只有一个默认值null
在堆内存中开辟一块空间用于存放Phone类型的对象
要给这个对象进行初始化,比如:String brand = null;
此对象已经准备好,所以会生成一个唯一的地址值,并将这个地址值交给栈内存中的变量p来保存
如果后续想要对对象做操作,比如:p.price=88.8;先会找到栈中p变量保存的地址值,根据这个地址找到堆中的对象再做进一步的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值