一个对象调用另外一个对象:
方法一:
Teacher类
public class Teacher {
private String name;
private String subject;
public Teacher() {
}
public Teacher(String name,String subject){
this.name = name;
this.subject = subject;
}
public void teach(){
System.out.println(name + " is teaching " + subject);
}
public static void main(String[] args){
Teacher teacher = new Teacher();
teacher.teach();
}
}
Student类: (这里调用了另一个对象)
public class Student {
private String name;
public Student(){
}
public Student(String name){
this.name = name;
}
public void study(){
Teacher teacher = new Teacher("jinhua","programing");
teacher.teach();
System.out.println(name +" is studying");
}
}
Test类:
public class Test {
public static void main(String[] args) {
Student student = new Student("jack");
student.study();
}
}
方法二:修改Student类和Test类,在Student类外生成另一个对象,传进study。
public class Student {
private String name;
public Student(){
}
public Student(String name){
this.name = name;
}
public void study(Teacher teacher){
teacher.teach();
System.out.println(name +" is studying");
}
}
public class Test {
public static void main(String[] args) {
Teacher teacher = new Teacher("jinhua","programing");
Student student = new Student("jack");
student.study(teacher);
}
}
输出结果都是:
jinhua is teaching programing
jack is studying
二、打jar包
1、在Teacher.java、Student.java、Test.java目录下,创建清单文件manifest.mf,文件内容一句话:Main-Class:Test。
2、终端输入命令 jar cvfn test.jar mainfest.mf Teacher.java Student.java Test.java 即会生成test.jar压缩文件
3、运行jar文件: java -jar test.jar。
三、到底调用哪一个方法
父类 对象 = new 子类();
Father obj = new Son();
obj对象只能调用子类继承或者复写的方法;
比如Son里有两个方法:吃饭和尿床。
obj.吃饭,调用的是子类的吃饭方法;
obj.尿床,语法错误。
4、匿名对象的生成及调用(在堆内存里有对象,在栈内存里没有名字)
new Student().study(); //匿名对象调用study函数.匿名对象只能用一次
5、空对象(在栈内存里有名字,在堆内存里没有对象)
Student s = null; //null:空 (会导致空指针异常)