面向对象(五)
一、参数传递
1、类名作为形式参数传递
如果一个方法的形参要一个类类型,那就传一个该类对象
举例:
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
student.show(student,20);
System.out.println(student.num);
}
}
class Student{
int num=100;
public void show(Student stu,int num){
stu.num=num;
}
}
2、抽象类名作为形式参数
如果一个方法的形参要一个抽象类 类型,那就传一个实现该类的子类的对象
举例:
public class MyTest2 {
public static void main(String[] args) {
Dog dog = new Dog();
setMethod(dog,4);
}
private static void setMethod(Animal an,int num) {
an.show(num);
}
}
abstract class Animal{
public abstract void show(int a);
}
class Dog extends Animal{
@Override
public void show(int num) {
System.out.println(num);
}
}
3、接口作为形式参数
如果一个方法的形参要一个接口 类型,那就传一个实现该接口的子类的对象
举例:
public class MyTest3 {
public static void main(String[] args) {
MyClass myClass = new MyClass();
test(myClass,22);
}
private static void test(MyInterface myInterface,int b) {
myInterface.show(b);
}
}
interface MyInterface{
void show(int a);
}
class MyClass implements MyInterface{
@Override
public void show(int a) {
System.out.println(a);
}
}
二、返回值
1、类名作为返回值类型
如果一个方法的返回值类型是类 类型,那就返回一个该类对象
举例:
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
student.num=20;
Student student1 = student.getStudent(111);
System.out.println(student1.num);
}
}
class Student {
int num=10;
public Student getStudent(int num){
this.num=num;
return this;
}
}
2、抽象类名作为返回值类型
如果一个方法的返回值类型是接口类型,那就返回一个实现该接口的子类的对象
举例:
public class MyTest2 {
public static void main(String[] args) {
MyInterface anInterface = getInterface();
anInterface.show(1000);
}
private static MyInterface getInterface() {
return new MyClass();
}
}
interface MyInterface{
void show(int num);
}
class MyClass implements MyInterface{
@Override
public void show(int num) {
System.out.println(num);
}
}
3、接口名作为返回值类型
如果一个方法的返回值类型是抽象类 类型,那返回一个实现该抽象类的子类的对象
举例:
public class MyTest3 {
public static void main(String[] args) {
Animal animal = getAnimal(new Cat());
animal.test();
}
private static Animal getAnimal(Cat cat) {
return cat;
}
}
abstract class Animal{
public abstract void test();
}
class Cat extends Animal{
@Override
public void test() {
System.out.println("abc");
}
}