Java - 面向对象的入门

面向对象和面向过程思想的区别

Java特性,相对于C,C++,Python:

健壮性,简单性,安全性,可移植性,多线程性,面向对象性。

1、概念:

对象泛指现实实现中的一切事务,每种事务都具有自己的属性行为面向对象的思想就是在计算机程序设计过程中,参照现实中的事务,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想,它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步步去操作去实现的。(面向对象的思想:就是对现实社会中事务的抽取)

解释一下,对象泛指现实中一切事务==万物皆对象;每种事务都具有自己的属性和行为:

比如说

对象:狗 

属性:名字、年龄、性别

行为:汪汪叫,吃屎,看家

区别:

面向过程:强调的是每一步的步骤,强调的是过程。

经典案例:打开电脑 开机 带上耳机 打开浏览器  输入网址 选择喜欢的 播放 脱裤子 擦干净 清除浏览痕迹 关闭浏览器 拿下耳机 关机

面向对象:  强调的是调用对象来完成,不在意每一步的步骤。

经典案例:找一个对象(收藏夹),打开浏览器 打开收藏夹 直接打开看。(省去了步骤)

面向对象思想更符合人类的思想——懒,面向对象可以把我们从执行者变成指挥者,面向对象的语言中,包含了三大基本特征,即封装、继承和多态


2、什么是类呢?

类是一组相关属性和行为的集合,可以看作是一类事物的模板,使用事务的属性特征和行为特征来描述该类事务。

现实中描述一类事物:

属性:该事务的状态信息。

行为:该事务可以做什么。

类:用来描述现实社会中的一些事务。

对象:生活中具体的事务。


3、什么是对象呢?

万物皆对象

  • 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。

现实中,一类事物的一个实例:一只小猫。

举例:一只名叫tom小猫。

属性:tom、5kg、2 years、yellow。 行为:溜墙根走、蹦跶的跑、喵喵叫。


4、类与对对象关系

类是对一类事物的描述,是抽象的

对象是一类事物的实列,是具体的(实例=对象 ,实例化=创建对象) 

类是对象的模板,对象是类的实体。一个类可以创建多个对象。

举例: 对象:小猫

属性:名字、体重、年龄、颜色

行为:走、跑、叫。


2.1创建类

关键字 class

class 类名 符合标识符命名规则,并且规范 首字母大写,后面驼峰

类名和Java文件名必须一致

public class 类名{
    
    //属性
    
    //行为
    
}



//一个java文件中可以写多个类 
//但是一个java中文中只能写一个public修饰的类,并且public修饰的类名要和文件名一致
//规范:一个java文件只写一个类   前期 为了大家理解方便,我会在一个java文件中写多个类
//class Person类名
public class Person {

}
class Cat{
	
}

class Dog{
	
}

2.2 定义属性

属性语法:

修饰符 数据类型 属性名;

//类名

public class Person{
    
    // 属性 
    //修饰符  数据类型 属性名;
    //属性的名字 首字母小写 后边的驼峰 
    
    
	//年龄属性
	public int age;
	
	//身高属性
	public double height;
	
	//名字属性
	public String name;
	
	
	//地址属性
	public String address;
	
	//性别
	public String sex;

}

2.3 定义行为

行为在Java中被称为方法

语法·: 修饰符 返回值类型 方法的名字(参数){

}

//类名
public class Person {

	//属性
	//修饰符  数据类型  属性名;
	//属性的名字   首字母小写,后面驼峰
	
	//年龄属性
	public int age;
	
	//身高属性
	public double height;
	
	//名字属性
	public String name;
	
	
	//地址属性
	public String address;
	
	//性别
	public String sex;
	
	/*
	修饰符  返回值类型  方法的名字(参数){
              //代码 干啥用代码描述
	}*/
	
	//方法的名字 首字母小写,后面驼峰
	//说话
	public void say() {
		
		//干啥用代码描述
		System.out.println("奥利给!");
		
	}
	
	//吃饭
	public void eat() {
		System.out.println("吃饭");
	}
	
	//编程
	public void program() {
		System.out.println("coding ....");
	}
	
}

3、对象

3.1 如何创建对象

类一旦声名完毕,如果没有具体对象存在,那么这个类没有意义

需要得到一个具体的对象(实例)

语法: 类名  变量名 = new 类名();

这个代码写在哪里?

我们想要运行Java代码,入口类,这个入口类必须又有一个main方法

//我们要想运行java代码,入口类,这个入口类必须有一个main方法
public class PersonDemo {
	
	public static void main(String[] args) {
		
		//指挥者
		
		//创建对象 
		//类名 对象名=new 类名();
		//声明Person类型的变量就进行赋值
		Person person1=new Person();
		
		
		//定义一个person类型的变量
		Person person2;
		
		//赋值
		person2=new Person();
		
		
	}

}


3.2 如何使用对象

使用对象:就是设置对象的属性或者获取对象的属性,以及调用对象的行为


3.3 如何获取对象的属性

语法 : 

对象名.属性 进行调用

变量类型  变量名 = 对象名.属性;

//我们要想运行java代码,入口类,这个入口类必须有一个main方法
public class PersonDemo {
	
	public static void main(String[] args) {
		
		//指挥者
		
		//创建对象 
		//类名 对象名=new 类名();
		//声明Person类型的变量就进行赋值
		Person person1=new Person();
		
		
		//获取属性
		//变量的类型  变量名=对象名.属性;
		int age=person1.age;
		
		
		//我们在编写类的时候没有给初始化值
		//系统会自动给出默认值 byte short in long 默认都是0
		//float double都是0.0 boolean是false char ' '  引用数据类型默认值是 null  String是属于引用数据类型
		System.out.println(age);//0

		//获取地址
		System.out.println(person1.address);//null
		
		//获取身高
		System.out.println(person1.height);//0.0
		
	}

}

3.4 定义类的时候给出默认值

public class Person {

	//属性
	//修饰符  数据类型  属性名;
	//属性的名字   首字母小写,后面驼峰
	
	//年龄属性
	public int age;
	
	//身高属性
	public double height=50;
	
	//名字属性
	public String name;
	
	
	//地址属性
	public String address="中国";
	
	//性别
	public String sex="男";
	

	}
package day08;


//我们要想运行java代码,入口类,这个入口类必须有一个main方法
public class PersonDemo {
	
	public static void main(String[] args) {
		
		//指挥者
		
		//创建对象 
		//类名 对象名=new 类名();
		//声明Person类型的变量就进行赋值
		Person person1=new Person();
		
		
		//获取属性
		//变量的类型  变量名=对象名.属性;
		int age=person1.age;
		
		
		//我们在编写类的时候没有给初始化值
		//系统会自动给出默认值 byte short in long 默认都是0
		//float double都是0.0 boolean是false char ' '  引用数据类型默认值是 null  String是属于引用数据类型
		System.out.println(age);//0

		//获取地址
		System.out.println(person1.address);//中国
		
		//获取身高
		System.out.println(person1.height);//50.0
		
	}

}

如果没有给出值,获取的就是默认值,如果我们在定义类的时候给出了默认值,那么获取的就是我们给出的默认值。


3.5 如何给属性赋值

对象名.属性 = 值;

	Person person1=new Person();
		
		//如何给对象的属性进行赋值
		//对象名.属性=值;
		
		System.out.println(person1.age);//0
		
		//新的值来了,旧的值就被覆盖了
		person1.age=1;
		
		System.out.println(person1.age);//1
		
		System.out.println(person1.name);//null
		
		person1.name="奥利给";
		
		System.out.println(person1.name);//奥利给
		
		
		//改变的是对象的属性,所以对另外一个对象没有影响
		Person person2=new Person();
		System.out.println(person2.name);//null
		

3.6 如何调用对象的行为

语法 : 对象名.方法名();

调用一次执行一次

        person1.eat();
        person1.program();
        person1.eat();


4 方法

4.1 成员变量和局部变量的区别

1、在类中的位置不同:    

        成员变量在类中方法外;局部变量在方法中定义的变量(方法里边 方法声明)

2、 作用范围不同 :

        成员变量在类中都可以使用,局部变量只有在定义该变量的方法中使用

3、存在的内存位置不同:

        成员变量在堆内存,局部变量在栈内存

4、初始值不同

        成员变量默认初始化,局部变量没有默认初始化,必须定义赋值后使用

5、生命周期不同

        成员变量随着对象创建而存在,随着对象消失而销毁;局部变量随着方法调用而存在,随着方法调用完毕而消失。

class Variable{
	
	//成员变量 类中方法外
	public int num;
	
	public int num2;
	
	
	public void show() {
		
		
		//局部变量   在方法中定义的变量,生命周期是在方法定义的{}中
		int i=0;
		
		//int num2=30;
		
		
		System.out.println(num2);
		System.out.println(i);
	}
	
	
	public void show2() {
		System.out.println(num2);
	}
	
}

public class VariableDemo {
	
	
	public static void main(String[] args) {
		
		//局部变量
		//局部变量必须要赋值才输出 没有默认值
		int i;
		
		//System.out.println(i);
		
	}

}

4.2 方法定义格式

修饰符 返回值 方法名 (参数类型 参数名,参数类型 参数名2){

        代码 

        return 返回值;

}

返回值类型:就是功能返回的结果数据类型

参数: 形式参数 就是定义在方法的声明中,用于接收实际参数

return:结束方法的

返回值:就是功能允算的结果,有return调用给调用者


4.3 有参数 没有返回值

class Number{

	//需求:我给你两个整数,两个整数相加,打印出来
	//定义一个方法的时候:两个明确
	//A:返回值类型: 结果的数据类型
	//B:参数列表: 你要传递几个参数,以及每个参数的类型
	
	//void 代表没有返回值
	public void sum(int a,int b) {//int a=1,int b=2
		
		//封装重复代码的
		int c=a+b;
		
		System.out.println(c);
		
		//方法写完后需要结束 return 用于结束方法,并且返回结果
		//如果一个方法没有返回结果,返回类型为void return不用跟值,return可以省略,系统会自动生成
		//return;
	}
	
	
}


public class MethodDemo01 {

	public static void main(String[] args) {
		
		
		//方法我们如何进行调用?
		
		//1.不管是属性还是行为,必须先有对象
		
	
		//2.创建对象
		Number number=new Number();
		
		//3.调用方法 需要传递两个值
		//方法调用一次执行一次,相互之间没有干扰
		number.sum(1,2);

		number.sum(3, 5);
		
		number.sum(99, 100);
	}

}

4.4 形式参数和实际参数

实际参数就是实际参数的值;

形式参数就是定义在方法中的声明中,用于接收实际参数


4.5 有参数 有返回值

class Number2{
	
	
	//需求:我给你两个整数,你给我相加然后把结果给我
	//两个明确:
	//A:返回值类型  整型
	//B:参数列表  
	public int sum(int a,int b) {//int a=1,int b=2
		
		int c=a+b;//int c=1+2=3
		
		return c;//3
		
	}
	
	
	
}

public class MethodDemo02 {
	
	//1.单独调用 一般来说没有意义	
	//2.输出调用 但是不够好,因为后期会对结果进行进一步的处理
	//3.赋值调用 用一个变量接收返回的值,推荐方案
	public static void main(String[] args) {
		
		//1.用Number2这个类创建一个对象,然后把对象的内存地址赋值给number2这个局部变量
		Number2 number2=new Number2();
		
		//2.调用方法
	
        //1.单独调用 一般来说没有意义		
		//number2.sum(1, 2);
		
		//2.输出调用
		//System.out.println(number2.sum(1, 2));
		
		//3.赋值调用
		int result=number2.sum(1, 2);
		
		System.out.println(result);
		
	}
	

}

4.6 没有参数没有返回值

class Phone{
	
	//品牌
	public String brand;
	
	//价格
	public double price;
	
	
	//颜色
	public String color;
	
	
	//打电话
	public void call() {
		
		System.out.println("打电话");
		
	}
	
	//打游戏
	public void playGame() {

		System.out.println("打豆豆");
		
	}
	
	
	//上网
	public void surfTheInternet() {

		System.out.println("上网");
		
	}
	
}

4.7 没有参数但是有返回值

class Number2{
	

	//没有参数,但是有返回值
	public int sum2() {
		
		return 100;
	}
	
	
}

public class MethodDemo02 {
	
	//1.单独调用 一般来说没有意义	
	//2.输出调用 但是不够好,因为后期会对结果进行进一步的处理
	//3.赋值调用 用一个变量接收返回的值,推荐方案
	public static void main(String[] args) {
		
		//1.用Number2这个类创建一个对象,然后把对象的内存地址赋值给number2这个局部变量
		Number2 number2=new Number2();
		

		
		//输出调用
		System.out.println(number2.sum2());
		
		//赋值调用
		int result2=number2.sum2();
		System.out.println(result2);
		
	}
	

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值