Java基础(10)接口、方法的参数类型以及返回值类型、权限修饰符 您所在的位置:网站首页 java中方法返回值有什么用呢 Java基础(10)接口、方法的参数类型以及返回值类型、权限修饰符

Java基础(10)接口、方法的参数类型以及返回值类型、权限修饰符

2024-05-24 19:33| 来源: 网络整理| 查看: 265

1.接口

1. 接口的由来:为了体现事物功能的扩展性,Java通过接口来定义这些额外的扩展功能。但是并不给出具体实现,需要类来重写 2. 接口的特点 (1)定义接口:interface 定义格式:interface 接口名{} (2)实现类:implements 定义格式:class 类名 implements 接口名{} (3)接口不能实例化,需要按照多态的方式实例化 (4)接口的实现类:具体类,类中需要重写接口中所有抽象方法

public class TestDemo01 { public static void main(String[] args) { rInterface rf1 = new EZ(); rf1.R(); //精准弹幕 System.out.println("=============="); rInterface rf2 = new Gragas(); rf2.R(); //肉弹冲击 } } interface RInterface{ public abstract void R(); } class EZ implements RInterface{ String name = "伊泽瑞尔"; public void attack(){ System.out.println("平A"); } public void magic(){ System.out.println("放技能"); } @Override public void R() { System.out.println("精准弹幕"); } } class Gragas implements RInterface{ String name = "古拉加斯"; public void attack(){ System.out.println("平A"); } public void magic(){ System.out.println("放技能"); } @Override public void R() { System.out.println("肉弹冲击"); } }

3. 接口的成员特点 (1)成员变量:只能是常量,且是静态的。默认用 public static final 修饰 (2)构造方法:接口中没有构造方法 (3)成员方法:只能是抽象方法。默认修饰符 public abstract

public class TestDemo02 { public static void main(String[] args) { LOLInterface lol = new VN(); lol.R(); //终极时刻 System.out.println(lol.NUM); //199 } } interface LOLInterface{ public static final int NUM = 199; //成员变量前面的默认修饰符是 public static final public abstract void R(); //方法前面存在默认修饰符 public abstract } class VN implements LOLInterface{ @Override public void R() { System.out.println("终极时刻"); } }

4. 类与类,类与接口,接口与接口之间的关系 (1)类与类:继承关系。只能单继承,可以多级继承 (2)类与接口:实现关系。可以单实现,也可以多实现。而且可以在继承一个类的同时实现多个接口 (3)接口与接口:继承关系。可以单继承,可以多继承

5. 抽象类与接口的区别 (1)成员变量

抽象类:可以是变量,可以是常量接口:只能是常量

(2)构造方法:抽象类有,接口没有 (3)成员方法

抽象类:可以抽象,也可以非抽象接口:必须是抽象 (注)在JDK1.8之后,接口中提供了default修饰方法,可以给出功能的具体实现。JDK1.8之后,也可以在接口中定义静态方法 public class TestDemo01 { public static void main(String[] args) { RInterface ri = new Gragas(); ri.R(); //肉弹冲击 //静态方法直接通过接口来调用 RInterface.R2; //酒桶的肉弹冲击 } } interface RInterface{ //在JDK1.8之后,接口中提供了default修饰方法,可以给出功能的具体实现 public default void R(){ System.out.println("肉弹冲击"); } //JDK1.8之后,也可以在接口中定义静态方法 public static void R2(){ System.out.println("酒桶的肉弹冲击"); } } class Gragas implements RInterface{ } 2.方法参数类型以及返回值类型问题

1. 类名 (1)类名作为形式参数:当看到一个方法的参数时一个类 类型时,就传递一个该类的对象

public class TestDemo01 { public static void main(String[] args) { Student student = new Student(); test(student,30); System.out.println(student.num); //30 /* test(new Student(),60); System.out.println(student.num); //30 */ student.setNum(student,100); System.out.println(student.num); //100 } public static void test(Student student,int num){ student.num = num; } } class Student{ int num = 20; public void setNum(Student student,int num){ student.num = num; } }

(2)类名作为返回值:当看到一个方法的返回值类型是一个类 类型时,就返回一个该类的对象

public class TestDemo01 { public static void main(String[] args) { Student student = test(100); int num = student.num; System.out.println(num); //100 } public static Student test(int num){ Student student = new Student(); student.num = num; return student; } } class Student{ int num = 20; }

2. 抽象类

(1)抽象类作为形式参数:当看到一个方法的形参是一个抽象类 类型,就传递一个该抽象类的子类

public class TestDemo02 { public static void main(String[] args) { MySon myson = new MySon(); test(myson,1000); System.out.println(myson.num); //200 只改变了父类的num值为1000,子类没有改变 test(new CC(),2000); System.out.println(myson.num); //200 } public static void test(MyClass myClass,int num){ myClass.num = num; } } abstract class MyClass{ int num = 20; public abstract void show(int num); } class MySon extends MyClass{ int num = 200; @Override public void show(int num) { this.num = num; } } class CC extends MyClass{ @Override public void show(int num) { } }

(2)抽象类名作为返回值类型:看到一个方法的返回值类型是一个抽象类 类型时,就返回一个该类抽象类的子类对象

public class TestDemo01 { public static void main(String[] args) { MyClass myClass = test(800); System.out.println(myClass.num); //200 MySon mySon = (MySon) myClass; System.out.println(mySon.num); //800 } public static MyClass test(int num){ MySon mySon = new MySon(); mySon.num = num; return mySon; } } abstract class MyClass{ int num = 200; public abstract void show(int num); } class MySon extends MyClass{ int num = 2; @Override public void show(int num) { this.num = num; } }

3. 接口名 (1)接口名作为形式参数:如果看到一个方法的形式参数是一个接口类型,那么就传递一个该接口的实现类对象 (2)接口名作为返回值类型:如果看到一个方法的返回值类型是一个接口类型,那就返回一个该接口的实现类对象

3.权限修饰符

1. 一共有四种权限修饰符:public > protected > ( ) > private 2. 结论 在这里插入图片描述 3. 常见的修饰符 (1)修饰符

权限修饰符:private,( ),protected,public状态修饰符:static,final抽象修饰符:abstract

(2)修饰类的关键字

权限修饰符:( ),public状态修饰符:final抽象修饰符:abstract用的最多的:public

(3)修饰成员变量的关键字

权限修饰符:private,( ),protected,public状态修饰符;static,final用的最多的:private

(4)修饰构造方法的关键字

权限修饰符:private,( ),protected,public用的最多的:public

(5)修饰成员方法的关键字

权限修饰符:private,( ),protected,public状态修饰符:static,final抽象修饰符:abstract用的最多的:public

(6)组合

成员变量: public static final成员方法:public static(abstract、final)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有