方法的参数和返回
类名作为参数
package lulux.fangfacanshufanhuizhi;
import sample.day9.gouzaohanshu.StudentDemo;
class Student {
public void study(){
System.out.println("好好学习,天天向上");
}
}
class Students1{
public void study(){
System.out.println("123345");
}
}
class studentDemo{
//形式参数为对象
public void method(Student s){
s.study();
}
}
public class Demo1 {
public static void main(String[] args) {
Student s = new Student();
studentDemo sd = new studentDemo();
sd.method(s);
}
}
抽象类作为参数
abstract class Person{
public abstract void study();
}
class Teacher extends Person{
@Override
public void study() {
System.out.println("好好学习,天天向上!");
}
}
class PersonDemo{
//如果方法的参数为抽象类
//我们需要传入该抽象类的子类对象
public void method(Person p) {//Person p=0x001
p.study();
}
}
public class Demo02 {
public static void main(String[] args) {
//多态 向上转型
//Person person=new Teacher();//0x001
Teacher teacher=new Teacher();//0x001
//我们可以提前向上转型,也可以在传参的时候向上转型
PersonDemo personDemo=new PersonDemo();
//personDemo.method(teacher);//0x001
personDemo.method(new Teacher());
}
}
接口作为参数
interface Love{
public void love();
}
class LoveDemo{
//形式参数为接口,传入的是接口的实现类对象
public void method(Love l) {
l.love();
}
}
class Employee implements Love{
@Override
public void love() {
System.out.println("员工爱赚钱!");
}
}
public class Demo03 {
/**
* @param args
*/
public static void main(String[] args) {
Love l=new Employee();
new LoveDemo().method(l);
new LoveDemo().method(new Employee());
}
}
类名作为方法的返回值
如果类名作为返回值,返回该类创建的对象的内存地址
class Student{
public void study() {
System.out.println("好好学习,天天向上!");
}
}
class StudentDemo{
//如果类名作为返回值,返回该类创建的对象的内存地址
public Student getStudent() {
//Student s=new Student();
//return s;
return new Student();
}
}
public class StudentTest {
public static void main(String[] args) {
StudentDemo demo=new StudentDemo();
Student s=demo.getStudent();
s.study();
}
}
抽象类作为方法的返回值类型
如果抽象类作为方法的返回值 返回的是该抽象类的子类对象的内存地址
abstract class Person{
public abstract void study();
}
class Teacher extends Person{
@Override
public void study() {
System.out.println("好好学习,天天向上!");
}
}
class PersonDemo{
//如果抽象类作为方法的返回值 返回的是该抽象类的子类对象的内存地址
public Person getPerson() {
//Person p=new Teacher();
return new Teacher();
}
}
public class Demo02 {
public static void main(String[] args) {
Person p=new PersonDemo().getPerson();
p.study();
}
}
接口作为方法的返回值类型
如果接口作为方法的返回值,返回的是该接口的实现类对象
interface Love{
public void love();
}
class Employee implements Love{
@Override
public void love() {
System.out.println("员工爱赚钱!");
}
}
class LoveDemo{
//如果接口作为方法的返回值,返回的是该接口的实现类对象
public Love getLove() {
//Love l=new Employee();
//return l;
return new Employee();
}
}
public class Demo03 {
/**
* @param args
*/
public static void main(String[] args) {
Love love = new LoveDemo().getLove();
love.love();
}
}
常见的修饰符特点
修饰符:
权限修饰符 private 默认的 protected public
状态修饰符 static final
抽象修饰符 abstract
类:
权限修饰符 默认的 public
状态修饰符 final
抽象修饰符 abstract
用的最多的是 public
成员变量:
权限修饰符 private 默认的 protected public
状态修饰符 static final
用的最多的是 private
成员方法:
权限修饰符 private 默认的 protected public
状态修饰符 static final
抽象修饰符 abstract
用的最多的是 public
构造方法:
权限修饰符 private 默认的 protected public
用的最多的是 public
组成规则
组成变量 public static final
成员方法 public static
public abstarct
public final