day12_内部类&API

打印 上一主题 下一主题

主题 492|帖子 492|积分 1476

1、参数传递

1.1 类名作为形参和返回值


  • 类名——方法形参
    方法的形参是类名,需要的是该类的对象;实际传递的是该对象的地址值

  • 类名——返回值
    方法的返回值是类名,返回的是该类的对象;实际传递的是该对象的地址值

  • 示例代码
  1. public class Cat {
  2.     public void eat(){
  3.         System.out.println("猫吃鱼");
  4.     }
  5. }
  6. public class CatOperator {
  7.     //类名作为方法的形参
  8.     public void useCat(Cat c){ //Cat c = new Cat();
  9.         c.eat();
  10.     }
  11.     //类名作为方法的返回值
  12.     public Cat getCat(){
  13.         Cat c = new Cat();
  14.         return c;
  15.     }
  16. }
  17. public class CatDemo {
  18.     public static void main(String[] args) {
  19.         //创建操作类对象,并调用方法
  20.         CatOperator co = new CatOperator();
  21.         Cat c = new Cat();
  22.         co.useCat(c);
  23.         Cat c2 = co.getCat();
  24.         c2.eat();
  25.     }
  26. }
复制代码
1.2 抽象类作为形参和返回值(理解)


  • 抽象类作为形参和返回值

    • 方法的形参是抽象类,其实需要的是该抽象类的子类对象
    • 方法的返回值是抽象类,其实返回的是该抽象类的子类对象

  • 示例代码
  1. public class Cat extends Animal {
  2.     @Override
  3.     public void eat() {
  4.         System.out.println("猫吃鱼");
  5.     }
  6. }
  7. public abstract class Animal {
  8.     public abstract void eat();
  9. }
  10. public class AnimalOperator {
  11.     public void userAnimal(Animal a){
  12.         a.eat();
  13.     }
  14.     public Animal getAnimal(){
  15.         Animal a = new Cat();
  16.         return a;
  17.     }
  18. }
  19. public class AnimalDemo {
  20.     public static void main(String[] args) {
  21.         AnimalOperator ao = new AnimalOperator();
  22.         Animal a = new Cat();
  23.         ao.userAnimal(a);
  24.         Animal ao2 = ao.getAnimal();
  25.         ao2.eat();
  26.     }
  27. }
复制代码
1.3 接口作为形参和返回值(理解)


  • 接口作为形参和返回值

    • 方法的形参是接口,其实需要的是该接口的实现类对象
    • 方法的返回值是形参,其实返回的是该接口的实现类对象

  • 示例代码
  1. public interface Jumpping {
  2.     void jump();
  3. }
  4. public class Cat implements Jumpping{
  5.     @Override
  6.     public void jump() {
  7.         System.out.println("猫可以跳高");
  8.     }
  9. }
  10. public class JumppingOperator {
  11.     public void useJumpping(Jumpping j){//Jumpping j = new Cat();
  12.         j.jump();
  13.     }
  14.     public Jumpping getJumpping(){
  15.         Jumpping j = new Cat();
  16.         return j;
  17.     }
  18. }
  19. public class JumppingDemo {
  20.     public static void main(String[] args) {
  21.         JumppingOperator jo = new JumppingOperator();
  22.         Jumpping j = new Cat();
  23.         jo.useJumpping(j);
  24.         Jumpping j2 = jo.getJumpping();
  25.         j2.jump();
  26.     }
  27. }
复制代码
2、内部类

2.1 内部类的基本使用(理解)


  • 内部类概念

    • 在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被成为内部类
    • 内部类定义格式

      • 格式:


  1. class 外部类名{
  2.     修饰符 class 内部类名{
  3.    
  4.     }
  5. }
复制代码





      • 举例


  1. public class Outer {
  2.     public class Inner{
  3.         
  4.     }
  5. }
复制代码

  • 内部类的访问特点

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

  • 示例代码
  1. public class Outer {
  2.     private int num = 10;
  3.     public class Inner{
  4.         public void show(){
  5.             System.out.println(num);
  6.         }
  7.     }
  8.     public void method(){
  9.         Inner i = new Inner();
  10.         i.show();
  11.     }
  12. }
复制代码
2.2 成员内部类(理解)


  • 成员内部类的定义位置

    • 在类中方法外,跟成员变量是一个位置

  • 外界拆功能键成员内部类格式

    • 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
    • 举例:Outer.Inner oi = new Outer().new Inner();

  • 示例代码
  1. public class Outer {
  2.     private int num =10;
  3.     private class Inner {
  4.         public void show(){
  5.             System.out.println(num);
  6.         }
  7.     }
  8.     public void method(){
  9.         Inner i = new Inner();
  10.         i.show();
  11.     }
  12. }
  13. public class OuterDemo {
  14.     public static void main(String[] args) {
  15.         Outer o = new Outer();
  16.         o.method();
  17.     }
  18. }
复制代码
2.3 局部内部类(理解)


  • 定义位置

    • 定义在方法中

  • 使用方式

    • 局部内部类,外界是无法直接使用,需要在方法内部创建对象并使用
    • 该类可以直接访问外部类的成员,也可以访问方法内的局部变量

  1. public class Outer {
  2.     private int num = 10;
  3.     public void method(){
  4.         int num2 = 20;
  5.         class Inner{
  6.             public void show(){
  7.                 System.out.println(num);
  8.                 System.out.println(num2);
  9.             }
  10.         }
  11.         Inner i = new Inner();
  12.         i.show();
  13.     }
  14. }
  15. public class OuterDemo {
  16.     public static void main(String[] args) {
  17.         Outer o = new Outer();
  18.         o.method();
  19.     }
  20. }
复制代码
 2.4 匿名内部类(应用)


  • 匿名内部类的前提

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

  • 匿名内部类的格式

    • 格式:new 类名(){重写方式}  /new 接口名 () {重写方法}
    • 举例

  1. new Inter(){
  2.     @Override
  3.     public void method(){}
  4. }
复制代码

  • 匿名内部类的本质

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

  • 匿名内部类的细节

    • 匿名内部类可以通过多态的形式接受

  1. Inter i = new Inter(){
  2.     @Override
  3.     public void method(){
  4.    
  5.     }
  6. }
复制代码

  • 匿名内部类直接调用方法
  1. public interface Inner {
  2.     public void method();
  3. }
  4. public class InnerDemo {
  5.     public static void main(String[] args) {
  6.         new Inner(){
  7.             @Override
  8.             public void method(){
  9.                 System.out.println("我是匿名内部类");
  10.             }
  11.         }.method();
  12.     }
  13. }
复制代码
2.4 匿名内部类在开发中的使用(应用)


  • 使用

    • 当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统代码

  • 示例代码
  1. public interface Jumpping {
  2.     void jump();
  3. }
  4. public class Cat implements Jumpping{
  5.     @Override
  6.     public void jump() {
  7.         System.out.println("猫可以跳高了");
  8.     }
  9. }
  10. public class Dog implements Jumpping{
  11.     @Override
  12.     public void jump() {
  13.         System.out.println("狗可以跳高了");
  14.     }
  15. }
  16. public class JumppingOperator {
  17.     public void method(Jumpping j){
  18.         j.jump();
  19.     }
  20. }
  21. public class JumppingDemo {
  22.     public static void main(String[] args) {
  23.         //创建接口操作类对象调用method方法
  24.         JumppingOperator jo = new JumppingOperator();
  25.         //方式一:传统方式
  26.         //操作猫的行为
  27.         Jumpping j1 = new Cat();
  28.         jo.method(j1);
  29.         //操作狗的行为
  30.         Jumpping j2= new Dog();
  31.         jo.method(j2);
  32.         //方式二:匿名内部类的方式
  33.         //操作猫的行为
  34.         jo.method(new Jumpping() {
  35.             @Override
  36.             public void jump() {
  37.                 System.out.println("猫可以跳高了");
  38.             }
  39.         });
  40.         //操作狗的行为
  41.         jo.method(new Jumpping() {
  42.             @Override
  43.             public void jump() {
  44.                 System.out.println("狗可以跳高了");
  45.             }
  46.         });
  47.     }
  48. }
复制代码
3、常用API

3.1 Math(应用)


  • 概述:Math包含执行基本数字的方法
  • 方法的调用方式:Math类中无构造方法,但内部的方法都静态的,则可以通过 类名进行调用
  • 常用方法:

3.2 System(应用)


  • 常用方法


  • 示例代码

    • 需求:在看控制台输出1-10000,计算这段代码执行了多少毫秒

[code]public class SystemDemo {    public static void main(String[] args) {        //需求:在控制台输出1-10000,计算这段代码执行了多少毫秒        //获取开始的时间节点        long start = System.currentTimeMillis();        for (int i = 1; i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表