(1)形式参数: 类名:需要该类的对象 抽象类名:需要改该类的子类的对象 接口名:需要该接口的实现类对象 (2):返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类对象 接口名:返回的是该接口的实现类的对象 (3):链式编程 对象.方法().方法().方法(); 这种用法:其实在方法1()调用完毕后,应该一个对象; 方法2()调用完毕后,应该返回一个对象。 方法n()调用完毕后,可能是对象,也可以不是对象。
引用类型 类:需要的是该类的对象 抽象类 接口 StudentDemo studentDemo = new StudentDemo(); Student ss = new Student(); studentDemo.method(ss);
抽象类:需要的是该抽象类的子类对象,因为本身不能实例化,所以要靠子类 abstract class Person{ public abstract void study(); } class PersonDemo{ public void method(Person person){//p;p = new Student(); Person p = new Student();//多态 person.study(); } } class Student1 extends Person{ @Override public void study() { System.out.println("我的"); } } public class XingCanDemo2 { public static void main(String[] args){ //目前没有办法使用 //因为抽象类没有对应的具体类 //那么,我们就应该先定义一个具体类 //需求:我要使用PersonDemo类中的method方法 PersonDemo pd = new PersonDemo(); Person p = new Student1();//利用多态 pd.method(p); } }
接口:需要该接口的子类对象(实现类对象)
//定义一个爱好的接口 interface Love{ public abstract void love(); } class LoveDemo{ public void method(Love love){//love; love = new Teather();Love love = new Teather();多态 love.love(); } } class Teacher implements Love{ @Override public void love() { System.out.println("love"); } } public class XingCanDemo3 { public static void main(String[] args){ //需求:我要测试LoveDemo类中的love方法 LoveDemo loveDemo = new LoveDemo(); Love love = new Teacher(); loveDemo.method(love); } }
//类作为引用变量依然要创建一个student对象 会不会占用过多内存?