Java基础之抽象类、接口作为方法参数和返回值

createh52周前 (12-17)技术教程12

不同修饰符使用细节

常用来修饰类、方法、变量的修饰符

  • public 权限修饰符,公共访问, 类,方法,成员变量
  • protected 权限修饰符,受保护访问, 方法,成员变量
  • 默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量
  • private 权限修饰符,私有访问, 方法,成员变量
  • static 静态修饰符 方法,成员变量
  • final 最终修饰符 类,方法,成员变量,局部变量
  • abstract 抽象修饰符 类 ,方法

我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰符不能同时使用;

  • 同时,abstract与private不能同时使用;
  • 同时,abstract与static不能同时使用;
  • 同时,abstract与final不能同时使用。

修饰类能够使用的修饰符

修饰类只能使用public、默认的、final、abstract关键字,使用最多的是 public关键字

public class Demo {} //最常用的方式
class Demo2{}
public final class Demo3{}
public abstract class Demo4{}

修饰成员变量能够使用的修饰符

  • public : 公共的
  • protected : 受保护的
  • : 默认的
  • private :私有的
  • final : 最终的
  • static : 静态的

(更多干货java咨询,可关注公众号“软帝在线”)

使用最多的是 private

public int count = 100;
protected int count2 = 100;
int count3 = 100;
private int count4 = 100; //最常用的方式
public final int count5 = 100;
public static int count6 = 100;

修饰构造方法能够使用的修饰符

  • public : 公共的
  • protected : 受保护的
  • : 默认的
  • private :私有的

使用最多的是 public

public Demo(){} //最常用的方式
protected Demo(){}
Demo(){}
private Demo(){}

修饰成员方法能够使用的修饰符

  • public : 公共的
  • protected : 受保护的
  • : 默认的
  • private :私有的
  • final : 最终的
  • static : 静态的
  • abstract : 抽象的

使用最多的是 public

public void method1(){}//最常用的方式
protected void method2(){}
void method3(){}
private void method4(){}
public final void method5(){}
public static void method6(){}//最常用的方式
public abstract void method7();//最常用的方式

类作为方法参数与返回值

类作为方法参数

在编写程序中,会经常碰到调用的方法要接收的是一个类类型的情况,那么这时,要向方法中传入该类的对象。如下代码演示:

class Person{
 public void show(){
 System.out.println("show方法执行了");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
//创建Person对象
 Person p = new Person();
//调用method方法
 method(p);
 }
 //定义一个方法method,用来接收一个Person对象,在方法中调用Person对象的show方法

 public static void method(Person p){
 p.show();
 }
}

类作为方法返回值

写程序调用方法时,我们以后会经常碰到返回一个类类型的返回值,那么这时,该方法要返回一个该类的对象。如下代码演示:

class Person{
 public void show(){
 System.out.println("show方法执行了");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
//调用method方法,获取返回的Person对象
 Person p = method();
//调用p对象中的show方法
 p.show();
 }

 //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
 public static Person method(){
 Person p = new Person();
 return p;
 }
}

抽象类作为方法参数与返回值

抽象类作为方法参数

开发中,抽象类作为方法参数的情况也很多见。当遇到方法参数为抽象类类型时,要传入一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
 public abstract void show();
}
class Student extends Person{
 @Override
 public void show() {
 System.out.println("重写了show方法");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
//通过多态的方式,创建一个Person类型的变量,而这个对象实际是Student
 Person p = new Student();
//调用method方法
 method(p);
 }

 //定义一个方法method,用来接收一个Person类型对象,在方法中调用Person对象的show方法
 public static void method(Person p){//抽象类作为参数
//通过p变量调用show方法,这时实际调用的是Student对象中的show方法
 p.show();
 }
}

抽象类作为方法返回值

抽象类作为方法返回值的情况,也是有的,这时需要返回一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
 public abstract void show();
}
class Student extends Person{
 @Override
 public void show() {
 System.out.println("重写了show方法");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
//调用method方法,获取返回的Person对象
 Person p = method();
//通过p变量调用show方法,这时实际调用的是Student对象中的show方法
 p.show();
 }

 //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
 public static Person method(){
 Person p = new Student();
 return p;
 }
}

接口作为方法参数与返回值

接口作为方法参数

接口作为方法参数的情况是很常见的,经常会碰到。当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
 public abstract void smoking();
}
class Student implements Smoke{
 @Override
 public void smoking() {
 System.out.println("课下吸口烟,赛过活神仙");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
 //通过多态的方式,创建一个Smoke类型的变量,而这个对象实际是Student
 Smoke s = new Student();
 //调用method方法
 method(s);
 }

 //定义一个方法method,用来接收一个Smoke类型对象,在方法中调用Smoke对象的show方法
 public static void method(Smoke sm){//接口作为参数
 //通过sm变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
 sm.smoking();
 }
}

接口作为方法返回值

接口作为方法返回值的情况,在后面的学习中会碰到。当遇到方法返回值是接口类型时,那么该方法需要返回一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
 public abstract void smoking();
}
class Student implements Smoke{
 @Override
 public void smoking() {
 System.out.println("课下吸口烟,赛过活神仙");
 }
}
//测试类
public class Test {
 public static void main(String[] args) {
//调用method方法,获取返回的会吸烟的对象
 Smoke s = method();
//通过s变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
 s.smoking();
 }

 //定义一个方法method,用来获取一个具备吸烟功能的对象,并在方法中完成吸烟者的创建
 public static Smoke method(){
 Smoke sm = new Student();
 return sm;
 }
}

归纳总结:

  • 类作为方法参数时,说明要向方法中传入该类的对象
  • 类作为方法返回值时,说明该方法要返回一个该类的对象。
  • 抽象类作为方法参数时,说明要传入一个实现抽象类所有抽象方法的子类对象。
  • 抽象类作为方法返回值时,说明需要返回一个实现抽象类所有抽象方法的子类对象。
  • 接口作为方法参数时,说明该方法要传入一个接口实现类对象。
  • 接口作为方法返回值时,说明该方法需要返回一个接口实现类对象。

(更多相关java知识干货,关注“软帝在线”公众号获取相关福利)

相关文章

可动态调节参数的线程池实现 动态参数调整

背景线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发的任务处理场景,线程池的使用是必不可少的。在双11主图价格表达项目中为了提升处理...

java -jar 启动参数 java -jar 启动参数 内存

/usr/local/java/jdk1.8.0_131/bin/java -jar -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...

Java程序的入口参数——main方法详解

//Java程序的入口参数——main方法public static void main(String[] args){......}public修饰符:Java类调用由JVM调用,为了让JVM可以自...

JVM诊断之查看运行参数 jvm运行参数说明

问题描述为了分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动...

WebService的发布与调用 webservices调用

WebService 简介首先先说一下,什么是webService,webService也是一种CS结构的WEB服务,C呢就是Client(客户端),S呢就是Server(服务端),webServic...

Java方法参数传递的机制 java方法参数可以传空吗

目前两种比较流行的方法参数传递模式主要是值传递和引用传递。不同的编程语言对于这两种机制可能有不同的处理方式。对Java来说,一切都是严格按值传递的。接下来,我们来一起探讨下 Java 如何为各种类型传...