JAVA基础知识面向对象之 ---- 参数类型与返回值类型、修饰符

JAVA基础知识面向对象之 ---- 参数类型与返回值类型、修饰符

参数类型

  • A:基本数据类型作为形参:

    ​ 当一个方法的形参为基本数据类型时,就传对应的基本数据类型。

  • B:类名作为形参:

    ​ 当一个方法的形参要一个类 类型,就传一个该类的对象。

    public class MyTest {
        public static void main(String[] args) {
            Student student = new Student();
            int num=2;
            set(student,num);     //调用set方法时就传一个该类的对象
            student.show(new Student(),100);     ///调用show方法时就传一个该类的对象
            System.out.println(student.num);   //100
    
        }
    
    	//set方法的形参要一个类 类型
        public static void set(Student student,int num){
            student.num=num;
        }
    }
    
    class Student{
        int num=10;
    
    	//show方法的形参要一个类 类型
        public void show(Student student,int num){
            student.num=num;
        }
    }
    
  • C:抽象类名作为形参:

    ​ 当一个方法的形参要一个抽象类 类型,就传一个该抽象类的子类对象。

    public class MyTest {
        public static void main(String[] args) {
            int num=1;
            Zi zi = new Zi();    
            set(new Zi(),num);    //调用set方法,就传一个该抽象类的子类对象
            zi.show(188);
            System.out.println(zi.num); //
        }
    
    	//set方法的形参要一个抽象类 类型
        public static void set(Fu fu,int num){
            fu.num=num;
        }
    }
    
    //抽象类Fu类
    abstract class Fu{
        int num=100;
        public abstract void show(int num);
    }
    
    class Zi extends Fu{
            int num=10;
        @Override
        public void show(int num) {
            this.num=num;
        }
    }
    
  • D:接口名作为形参:

    ​ 当一个方法的形参要一个接口类型,就传一个该接口的子类对象。

    public class MyTest {
        public static void main(String[] args) {
            int num=1;
            B b = new B();
            set(b,num);   //调用set方法,传一个A接口的子类对象b
        
            System.out.println(b.a);   //10
            System.out.println(b.NUM);   //100
            System.out.println(A.NUM);   //100
            System.out.println(B.NUM);   //100
        }
        
        //set方法的形参要一个接口类型A
        public static void set(A a,int num){
           new B().a=num;
           a.show(num);
        }
    }
    
    //接口A
    interface A{
        public static final int NUM=100;
        void show(int num);
    }
    
    class B implements A{
        int a=10;
    
        @Override
        public void show(int num) {
            this.a=num;
        }
    }
    
  • E:匿名内部类也可作为参数传递

    public class MyTest {
        public static void main(String[] args) {
                
             //匿名内部类可以作为参数传递
            set(new MyInterface() {
                @Override
                public void show() {
                    System.out.println("重写了show方法");
                }
    
                @Override
                public void test() {
                    System.out.println("重写了test方法");
                }
             });
             
             MyInterface my= new MyInterface() {
                @Override
                public void show() {
                    System.out.println("重写了show方法2222");
                }
    
                @Override
                public void test() {
                    System.out.println("重写了test方法2222");
                }
             };
             set(my);
        }
        
        public static void set(MyInterface myInterface){
            myInterface.show();
            myInterface.test();
        }
    }
    
    interface MyInterface{
        void show();
        void test();
    }
    

返回值类型

  • A:基本类型作为返回值类型:

    ​ 当一个方法的返回值类型 是一个基本数据类型,就返回相应的基本数据类型。

  • B:类名作为返回值类型:

    ​ 当一个方法的返回值类型 是一个 类 类型,就返回该类的一个对象。

    public class MyTest {
        public static void main(String[] args) {
            int num = 100;
            A a = new A();
            A a1 = a.getA(num);
            System.out.println(a.num); // 1
            System.out.println(a1.num);  // 1      
        }
    
        public static A getAA(A a, int num) {
            a.num = num;
            return a;
        }
    }
    
    class A {
        int num = 1;
    
        //get方法的返回值类型为A, 是一个 类 类型,
        public A getA(int num) {
            A a = new A();
            a.num = num;
            //  return a;
            return this;       //就返回该类的一个对象
        }
    }
    
  • B:接口名作为返回值类型:

    ​ 当一个方法的返回值类型,要一个接口类型,就返回该接口的一个子类对象。

    public class MyTest {
        public static void main(String[] args) {
            MyClass myClass = new MyClass();
            int num=2;
            MyInterface myInterface = get(myClass, num);
            myClass.show(109);
            System.out.println(myClass.num); 
            System.out.println(myInterface.NUM);
        }
        
        //get方法的返回值类型为MyInterface,是一个接口类型,
        public static MyInterface get(MyClass myClass,int num){
            myClass.num=num;
            return myClass;      //就返回该接口的一个子类对象
        }
    }
    
    interface MyInterface{
        int NUM=100;
        void show(int num);
    }
    
    class MyClass implements MyInterface{
        int num=1;
        @Override
        public void show(int num) {
            this.num=num;
        }
    }
    
  • C:抽象类名作为返回值类型:

    ​ 当一个方法的返回值类型,要一个抽象类 类型,就返回一个该抽象类的子类对象。

    public class MyTest {
        public static void main(String[] args) {
            Zi zi = new Zi();
            Fu fu = zi.getFu(zi, 109);
            System.out.println(zi.num); //109
            System.out.println(fu.num); //109
            System.out.println(zi);
            System.out.println(fu);
        }
    }
    
    abstract class Fu {
        int num = 10;
    }
    
    class Zi extends Fu {
        //getFu方法的返回值类型为FU,是一个抽象类 类型,
        public Fu getFu(Fu fu, int num) {
            fu.num = num;
            // return new Zi();
            return this;       //就返回一个该抽象类的子类对象
        }
    }
    

链式编程:

  • 链式编程:当调用完一个方法之后,方法的返回值又是一个对象,那么就可以紧接着再去调用对象的方法

    public class MyTest {
        public static void main(String[] args) {
            Student student = new Student();
            //链式编程
            new Student().getStudent(student, 100).show(109);
             //等价于:
             //Student student1 = student.getStudent(new Student(), 100);
             //student1.show(109);
            
            System.out.println(student.num); 
        }
    }
    
    class Student {
        int num = 10;
    
        public Student getStudent(Student stu, int num) {
            stu.num = num;
            return this;
        }
    
        public void show(int num) {
            this.num = num;
        }
    }
    

常见修饰符

  • A:分类:

    权限修饰符:private,默认的,protected,public
    状态修饰符:static,final
    抽象修饰符:abstract

  • B:权限修饰符的范围:

       		 本类	  同一个包下(子类和无关类)    不同包下(子类)     不同包下(无关类)
    

    private Y
    默认 Y Y
    protected Y Y Y
    public Y Y Y Y

  • C:修饰类的关键字:
    权限修饰符:默认修饰符,public
    状态修饰符:final
    抽象修饰符:abstract
    用的最多的就是:public

  • D:修饰成员变量的关键字:
    权限修饰符:private,默认的,protected,public
    状态修饰符:static,final
    用的最多的就是:private

  • E:修饰成员方法的关键字:
    权限修饰符:private,默认的,protected,public
    状态修饰符:static,final
    抽象修饰符:abstract

    用的最多的就是:public

  • F:修饰构造方法的关键字:
    权限修饰符:private,默认的,protected,public
    **

  • G:除此以外的组合规则:
    成员变量:public static final
    成员方法:public static
    public abstract
    public final

关键字

package关键字:

  • A:包的概述: 就是文件夹
  • B:包的作用: 用来解决同一个路径下不能存在同名文件的问题(分类管理)
  • C:包的划分:按照功能 、按照模块
  • D:定义包的格式:package 包名; 例如:package org.westos.demo9;
    多级包用.分开即可
  • E:定义包的注意事项:
    a:package语句必须是程序的第一条可执行的代码
    b:package语句在一个java文件中只能有一个
    c:如果没有package,默认表示无包名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值