Java学习-------面向对象2

面向"对象"编程思想2

可变参数的传递方式

咳咳,可变参数的意思就是参数的个数是可以有多个的。害,那这样你肯定就会说,用数组不就搞定了蛮,的确哈,数组可以完成多个参数的传递,但是我们今天要学的是一种新的知识,Java特有的 … 方式来传递可变个数的参数,这种参数在使用的时候呢,跟数组的使用方式相同。但是他们还是有区别的:
比如哈,当参数没有的时候,数组就必须要传递一个空过去,但是 … .的方式是不需要的。
这种 … 的方式代表可以传递 0 到 多个参数。
 
害,这样可能还是不太明白哈,按照小甲鱼的一句话就是 no picture you say a JB;举个例子哈!

public class Print { 	//分别建立两种方法
	
	public void printInfo(String[] a) {//以数组形式进行传递
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	}
	
	public void printInfo1(String... a) {  //以...的形式进行传递
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	}
}

在这里插入图片描述

方法的参数传递

方法哈,必须在其所在类或者对象调用才有意义,说到这个参数呀,就不得不来说一下这个形参和实参的区别了。
形参:方法声明时候所定义的参数。
实参:方法调用时实际传给形参的参数值。
在Java里面哈,形参和实参之间的传递呢,只存在一种关系,: 值传递
就是说,将实际参数值的复制品传送给方法里面的形参,其本身是不受影响的。
如果你学过C语言哈,你可能就会掉坑里面,C语言里面有的双向传值,但是在Java里面是没有的。啊哈哈哈哈哈哈哈!!!!

利用import进行包与包之间引用

咳咳,那木我们先来李姐下为啥要用这个东西呢,举个例子,我现在写的class文件是在包day06下编写的,然后呢,我需要用到包day05下的一个方法。该怎么办呢。在Java里面哈,调用的方法都是在一个包里面调用的,当出现跨包的情况下呢,就需要使用到我们的import关键字啦;害,上图上图。

在这里插入图片描述

  • 如上图所示,我在包day06里面进行编写,但是呢,我需要用到包day05里面的求圆面积方法的时候,怎么办呢,害,这个时候,肯定会有人说,那还不简单,再在这个包里面打一个求圆面积的方法不就好了蛮。这样,虽然能够解决问题,但是,他会使程序变大许多。所以哈,为了满足这种需求,就有了import关键字。
  • 格式呢,就是 import 包名 . 方法 ;
  • 这个时候,估计又有人提问了,说,万一那个包里面的所有功能我都要使用,难道我也一个一个打下去吗,又或者我不知道那个方法名,只知道这个功能在这个包里面,该怎么办呢。为了满足这种需求,我们强大的import关键字也能做到的。格式如下:
  • 格式: import 包名.*; 没错 你没有看错,就是点星号就好了,啊哈哈哈哈哈哈哈!!!

Java面向对象三大特性之一 ------- 封装

啊哈哈哈哈哈哈哈,终于是见到三大特性啦,咳咳,淡定,说到这个封装呀,咱们就得来聊聊这个public关键字了,打了这么多遍,我们应该都知道哈,他是公共的意思,就是你能用,我也能用,这就导致了不安全性。
就比如哈,我创建一个人的类,然后你通过实例化后创建了一个人的类的对象,因为你全部都是由public写的,更改权限全部开放出来了,此时别人就可以通过属性调用来更改你的值,这怎么可以呢。他给你的年龄改成负100岁,那不是气死。
这个时候,就应该出现了 private关键字 他呢,就可以将一些属性给封装起来。只有你自己可以使用。
害,还是直接上代码吧,我们先建立一个人的类别;

public class Person {
	
	String  name;		//这里哈!我们创建了两个属性,一个是没有封装的名字,一个是封装的年龄
	private int age;
	
	public void printName() { 		//直接输出名字的方法
		System.out.println("名字是:"+ name);
	}
	
	public void printAge() {		//直接输出年龄的方法
		System.out.println("年龄是:"+ age);
	}
	
	public void setAge(int a) {		//设置年龄的方法,这里就是封装的限制函数
		if(a <= 150 && a >= 0) {
			age = a;
		}else {
			System.out.println("输入的年龄不符合逻辑!!");
		}
	}
}

在这里插入图片描述

  • 这样哈,就完成了一次简单的封装啦,你学会了吗,啊哈哈哈哈哈哈哈!!!
  • private的意思呢,是私有的意思,一旦你设置了后呢,就只能在本类中使用了,别的类是无法调用的啦!
  • 它呢,也算是权限修饰符中的一种吧,那么接下来,我们就谈谈这个权限修饰符。

Java权限修饰 public、protected、private 置于类的成员定义之前,用来限定对象对该类成员的访问权限。

修饰符 类内部 同一个包 子类 任何地方
private Yes
(缺省)就是不写默认 Yes Yes
protected Yes Yes Yes
public Yes Yes Yes Yes

Java面向对象三大特性之一 ------- 继承

  • 我这样一写,你肯定又会问了,这个类内部、同一个包、任何地方我都能理解,那这个 子类 又是个啥玩意呢 ?
  • 这个时候呢,又要出现一个关键字了 ----- extends 干啥的呢,
  • 害,讲那么多干啥,直接上代码。
/** 
 * 咳咳,我再唠叨一句哈,类和接口的名字,首字母都要大写哦!
 * 通过extends可以构成父子类的关系哈! 
 * @author Jun木~
 *
 */
public class PersonChild extends Person{   //这个样写呢,PersonChild类就是Person的子类了。
	
	//那木这个子类有啥用呢,咳咳,就是继承,继承父类权限允许使用的属性和方法
	
	//比如,在Person类里面哈,方法都是以public修饰,这就意味着Person类的所有方法,在这里都可以使用。
	
	public void test() {   
		 System.out.println(name);
		 printName();
	}
	//这样,可以直接调用,不需要实例化啥的。
	//但是只有 public 和 protected 两个修饰符修饰的属性和方法才可以在子类中调用哦!
}

  • 啊哈哈哈哈哈哈哈,这种建立父子关系的方式,你学会了吗,就像 我 extends 你
  • 好嘞,今天就到这里啦。我得去躺会。。。小黑我来啦!!!!
改革尚未成功,同志仍需努力!!!
发布了17 篇原创文章 · 获赞 27 · 访问量 1743

猜你喜欢

转载自blog.csdn.net/qq_43514659/article/details/104748202