面向"对象"编程思想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 你 。
- 好嘞,今天就到这里啦。我得去躺会。。。小黑我来啦!!!!