Java学习——面向对象(概述)

面向对象
Java的面向对象学习三条主线
1.java类及类的成员
属性、方法、构造器;代码块、内部类
2.面向对象的三大特征
封装、继承、多态、(抽象)
3.其他关键字:this super static abstract interface package import

面向对象 VS 面向过程
例:人把大象关进冰箱

一、.面向过程:强调功能和行为,以函数为最小的单位,考虑怎么做
1.1 打开冰箱
1.2抬起大象,塞进冰箱
1.3.关上冰箱门

二、.面向对象:强调具被了功能的对象,以类/对象为最小单位,考虑谁来做。

{//描述人行为的类
	
	打开(冰箱){//打开的方法
		冰箱.打开();
	}

	抬起(大象){//抬起的方法
		大象.进入(冰箱);
	}
	
	关闭(冰箱){//关闭的方法
		冰箱.闭合();
	}
}

冰箱{//冰箱类
	开开(){}
	闭合(){}
}
大象{//大象类
	进入(){}//进入的方法
}

面向对象的两个要素:类、对象
1.类:对一类事物的描述,抽象的定义
2.对象:实际存在的该类事物
【注】
设计类就是在设计类的成员
属性=成员变量=field= 域、字段
方法 = 成员方法 = 行为 = 函数

创建类的变量、实例化类

//2.创建类的对象
public static void main(String[] args){
	Person p1 = new Person();//创建Person类对象
	
	//3.调用对象的相关功能
	p1.name = “Tom”;//属性的调用
	p1.eat();//方法的调用
}

//1.创建类和设计类的成员
class Person{
	String name;

	public void eat(){
		system.out.println(“你好”);
	}
}

类和对象的使用步骤 (结合上述代码分析)
1.创建类和设计类的成员
2.创建类的对象
3.调用对象的相关功能

内存解析
对于同一个类,每New一次,就会在中开辟一个新的空间,每个新的对象都独立拥有类里面的所有属性

对于没有使用new方式创建的对象,例如:Person p1 = p3;
该语句相当于,把p3 的地址值赋给p1,两个对象指向的内存空间相同,无论是对p1还是p3的属性进行修改,修改的值都是同一片内存空间里的值。
在这里插入图片描述
类中方法的声明和使用
方法:描述类中应该具有的功能
分类:返回值类型、有无形参

1.方法的声明:
权限修饰符 返回值类型 方法名(形参列表){
方法体
}

1.1权限修饰符
Java中规定四种修饰符 public private 缺省 protected。每种权限修饰符的访问权限不同,之后再详细解释

1.2返回值类型 有返回值 无返回值

1.2.1有返回值 例如String int long等返回值类型都有返回值
如果方法有返回值,则必须在方法声明时指定返回值的类型,同时方法中需要使用return关键字,返回指定类型的返回值

1.2.2无返回值
如果方法没有返回值,则方法声明时使用void来表示,方法体中不要求使用return,此时return仅作为结束方法体作用,在return后便无法再声明语句。

1.3方法名
符合方法名的命名规范,见名知意

1.4形参列表 可以声明0个,1个,或多个形参

1.4.1格式:数据类型1 形参1,数据类型2 形参2…

1.5方法体
方法功能的实现

补充:static final abstract,来修饰方法的

public int test1(int num){//这里的代码只是测试使用,所以方法名没有见名知意
	int sum = 0;
	for(int i = 0;i < num;i++){
		sum += i
	}
	return sum;
}

return关键字的使用
1.使用范围:使用在方法体中

2.作用

2.1结束方法

2.2针对有返回值类型的方法,使用“return数据 ”方法返回所要数据
注意:return后不可以声明语句

匿名对象的使用
1.实例化对象时,不将实例化的对象赋予给某一个变量而是直接调用对象里的方法。

2.匿名对象只能使用一次

public class Test1 {
    public static void main(String[] args) {
        System.out.println(new Person().name = "Tom");
        new Person().eat();
    }
    static class Person{
        String name;
        int age;
        public void eat(){
            System.out.println("人吃饭");
        }
        public void sleep(){}
    }
}

1.方法的重载

1.1在一个类一下允许存在一个以上的同名方法,只要他们的参数个数,或者参数类型不同。适用一些情况下,多种数据类型需要进行同一种运算,比如int 与 char型的的数组排序。

class Person{
		public void test(String name){
            
        }
        
        public void test(String name,int age){
            
        }
        
        public void test(String name,long age){
            
        }
}

1.2在调用方法时如何让确定一个指定的方法:方法名–>参数列表

2.可变个数的形参(jdk5.0新增内容

2.1数据类型:… 形参名 public void show(String … strs)

2.2允许直接定义能和多个实参相匹配的形参,从而可以用一种简单的方式来传递个书可变的实参。在调用时传入实参可以传入可变个0-…

2.3可变个数形参的方法,与本类中同方法名不同形参的方法构成重载

2.4在jdk5.0版本之前,传入多个实参可以通过数组方式完成,两者方法不共存
public void show(String[] strs){}

2.5有多个形参时,可变个数形参在方法的形参当中必须声明在末尾
public void show (int i,String … strs){}

2.6可变个数形参在方法的形参当中只能声明一个可变形参

3方法参数的值传递机制 值传递

3.1形参:方法声明时的参数
实参:方法调用时实际传给形参的数值

3.2传递机制

3.2.1如果传入的数据类型为基本数据类型,此时实参传入的是数据的值。方法体 内对形参进行的操作,仅仅改变了形参的值,在main方法中的实参值并未发生改变。

3.2.2如果数据是引用数据类型,此时实参传入的是数据的地址,在方法体内对形参进行的操作,改变了地址指向的数据值,即同时改变了形参与实参的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值