方法参数、包、权限修饰符
一、方法参数问题
1.形式参数
A.基本类型做为形式参数:传递一个基本类型的数据;
B.类名作为形式参数:传递一个该类的对象;
C.抽象类名作为形式参数:传递一个该抽象类的子类对象;
D.接口名作为形式参数:传递一个实现该接口的子类对象;
2.返回值
A.基本类型做为形式参数:返回一个基本类型的数据;
B.类名作为返回值类型:返回一个对应该类的对象;
C.抽象类名作为返回值类型:返回一个对应该抽象类的子类对象;
D.接口名作为返回值类型:返回一个对应实现该接口的子类对象;
3.例子
public class MyTest {
public static void main(String[] args) {
Teacher teacher = getTeacher(100);
Teacher tea = teacher.show(new Teacher(), 500);
System.out.println(teacher.num);
System.out.println(tea.num);
}
//返回了一个类的对象
public static Teacher getTeacher(int num) {
Teacher teacher = new Teacher();
teacher.num = num;
return teacher;
}
}
class Teacher {
int num = 20;
//传递一个类对象,和一个基本类型的数据;
public Teacher show(Teacher teacher, int num) {
this.num = num;
return this;
}
}
public class MyTest2 {
public static void main(String[] args) {
Zi zi = new Zi();//该抽象类的一个子类对象;
zi.num = 50;
CC cc = getCC(zi, 300);
cc.show(zi, 700);
System.out.println(cc.num);
Zi zi2 = (Zi) cc;
System.out.println(zi2.num);
System.out.println(zi.num);
}
//返回该抽象类的一个子类对象
public static CC getCC(CC cc, int num) {
cc.num = num;
System.out.println(cc.num + "======");
return new Zi();
}
}
abstract class CC {
int num = 20;
//需要一个该抽象类的子类对象
public abstract void show(CC cc, int num);
}
class Zi extends CC {
int num = 200;
@Override
public void show(CC cc, int num) {
this.num = num;
}
}
public class MyTest3 {
public static void main(String[] args) {
Iinterface anInterface = getInterface();
System.out.println(anInterface.num);
System.out.println(Iinterface.num);
System.out.println(Son.num);
}
//返回该接口的一个子类对象
private static Iinterface getInterface() {
Son son = new Son();//产生了一个该接口的子类对象
return son;
}
}
interface Iinterface {
public static final int num = 200;
public abstract void show();
}
class Son implements Iinterface {
@Override
public void show() {
}
}
分析以上程序时,要注意:
访问成员:编译看左边,运行看左边;
访问方法:编译看左边,运行看右边。
二、包(package)
1.package关键字的概述及作用
A:包的概述: 就是文件夹
B:包的作用: 用来解决同一个路径下不能存在同名文件的问题(分类管理)
C:包的划分:
a.功能;
b.模块;
2.包的定义及注意事项
A:定义包的格式
package 包名;
多级包用.分开即可
B:定义包的注意事项
a:package语句必须是程序的第一条可执行的代码
b:package语句在一个java文件中只能有一个
c:如果没有package,默认表示无包名
3.不同包下类之间的访问
需要使用import来将不同类所属的包名导入一个包含被public 修饰的类的程序里,便于访问。
A:导包的概述
不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。比较麻
烦。这个时候,java就提供了导包的功能
B:导包格式
import 包名;
注意:
这种方式导入是到类的名称。
虽然可以最后写*,但是不建议。
三、权限修饰符
1、四种权限修饰符的访问权限
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private 可以
默认 可以 可以
protected 可以 可以 可以
public 可以 可以 可以 可以
2.类及其组成所使用的常见修饰符
A:修饰符:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
B:修饰类的关键字:
权限修饰符:默认修饰符,public
状态修饰符:final
抽象修饰符:abstract
用的最多的就是:public
C:修饰成员变量的关键字:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
用的最多的就是:private
D:修饰构造方法的关键字:
权限修饰符:private,默认的,protected,public
用的最多的就是:public
E:修饰成员方法的关键字:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
用的最多的就是:public
F:除此以外的组合规则:
成员变量:public static final
成员方法:public static
public abstract
public final