当前位置: 移动技术网 > IT编程>软件设计>面向对象 > 面向对象(方法参数及返回值)

面向对象(方法参数及返回值)

2020年07月27日  | 移动技术网IT编程  | 我要评论

方法参数一级返回值类型

类名作为形式参数

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

抽象类名作为形式参数

当看到一个方法的形参要一个抽象类 类型的时候,就传递一个该抽象类的子类对象。

接口名作为形式参数

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

类名作为返回值类型

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

抽象类名作为返回值类型

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

接口名作为返回值类型

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

package关键字

概述:相当于就是一个文件夹

作用:用来解决同一个路径下不能存在同名文件的问题。,也就是方便分类管理。

划分:

按照功能划分,

按照模块划分

定义包的注意事项
  1. package语句必须是程序的第一条可执行的代码
  2. package语句在一个java文件中只有一个
  3. 如果没有package,默认表示无包名

import关键字

也就是导包

概述:不同包下的类之间的访问,这样我们就不需要加包的全路径,java自动导包

格式:import 包名;

权限修饰符:

本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y

常见修饰符

权限修饰符:private ,默认的,protected,public

状态修饰符:static , final

抽象修饰符:abstract

修饰类的关键字:

权限修饰符:默认修饰符,public

状态修饰符:final

抽象修饰符:abstract

用的最多的就是:public

修饰成员变量的关键字:

权限修饰符:private,默认的,protected, public

状态修饰符:static final

用的最多的就是:private

修饰构造方法的关键字:

权限修饰符:private,默认的,protected, public

用的最多的就是public

修饰成员方法的关键字:

权限修饰符:private,默认的,protected, public

状态修饰符:static final

抽象修饰符:abstract

用的最多的就是:public

除此以外的组合规则:

成员变量:public static final

成员方法:public static

​ public abstract

​ public final

内部类

概述:把类定义到其他类的内部的类

将类A定义到类B中,那么这个类A就称为内部类,类B称为外部类

访问特点:

  1. 内部类可以直接访问外部类的成员,包括私有。
  2. 外部类要访问内部类的成员,必须创建对象。

内部类的分类:

按照内部类的位置分类:

在成员位置定义的类,被称为成员内部类,定义在类中方法外。

在局部位置定义的类,称为局部内部类。定义在类中方法内

在测试类直接访问内部类的成员:

格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象

创建内部类的对象:

new outer().new inner()  也就是new两层。

成员内部修饰符:

成员内部类的修饰符:

private 为了保证数据的安全性

static为了访问数据

注意事项:

  1. 静态内部类访问的外部类数据必须使用静态修饰。
  2. 成员方法可以是静态的也可以是非静态的。

成员内部类被静态修饰后的访问方式是:

格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();

局部内部类

  1. 可以直接访问外部类的成员
  2. 可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能。
  3. 局部内部类访问局部变量必须用final修饰,因为局部变量会随着方法的调用完毕而消失,这个时候局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据能够继续被使用,就用final修饰,这样在堆内存里面存储的其实是一个常量值。在jdk1.8之后,final会默认加上不用自己手动加。

匿名内部类

就是局部内部类的简化写法。

前提:存在一个或者接口,这里的类可以是具体类,也可以是抽象类

格式:new 类名或接口名(){重写方法;}

本质其实就是一个继承该类或者实现了该接口的子类匿名对象。

匿名内部类其实就是一个子类匿名对象

package com.itheima.demo;

public class PersonTest {
    public static void main(String[] args) {
        //如何调用PersonDemo中的method方法呢?
       new PersonDemo().method(new Person() {//格式:new 类名或接口名(){重写方法;}
           @Override
           public void show() {

           }
       });

    }
}

package com.itheima.demo;

abstract class Person {
		public abstract void show();
	}


package com.itheima.demo;

class PersonDemo {
		public void method(Person p) {
        p.show();
			}
		}
package com.itheima.demo;

interface Inter {
		void show(); 
	}
	
	class Outer {
		public static Inter method() {
			return new Inter() {//调用谁就返回谁。
				@Override
				public void show() {
					System.out.println("hello word");
				}
			};
		}
		//补齐代码 
		
	}
	
	class OuterDemo {
		public static void main(String[] args) {
			  Outer.method().show();
		  }
	}

类中定义接口

在一个类里面可以定义一个接口称为内部接口,内部接口可以私有,私有后外界就无法创建其子类对象。在外界可以采用内部类的方式,创建出内部接口的子类对象。

new aa.bb(){}  bb是一个接口
}

class OuterDemo {
	public static void main(String[] args) {
		  Outer.method().show();
	  }
}

### 类中定义接口

在一个类里面可以定义一个接口称为内部接口,内部接口可以私有,私有后外界就无法创建其子类对象。在外界可以采用内部类的方式,创建出内部接口的子类对象。

new aa.bb(){} bb是一个接口


本文地址:https://blog.csdn.net/qq_46466568/article/details/107585625

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网