day11

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day11相关的知识,希望对你有一定的参考价值。

一、接口

接口的定义格式:

interface 接口名{

}

接口要注意的事项 :
1. 接口是一个特殊的类。
2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量(必须初始化)。
3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
4. 接口不能创建对象。
5. 接口是没有构造方法的。
6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。


实现接口的格式:

class 类名 implements 接口名{

}

 接口的作用:

1. 程序的解耦。 (低耦合)
2. 定义约束规范。
3. 拓展功能。

//普通的铅笔类
class Pencil{
    
    String name;

    public Pencil(String name){
        this.name = name;
    }

    public void write(){
        System.out.println(name+"沙沙的写...");
    }
}


//橡皮接口
interface Eraser{
    
    public void remove();
}


//带橡皮的铅笔
class PencilWithEraser extends Pencil implements Eraser {

    public PencilWithEraser(String name){
        super(name);
    }


    public void remove(){
        System.out.println("涂改,涂改....");
    }
}


class Demo8 
{
    public static void main(String[] args) 
    {
        //System.out.println("Hello World!");
    
        PencilWithEraser p = new PencilWithEraser("2B铅笔");
        p.write();
        p.remove();
    
    }
}

 

二、类与接口、接口与接口

(一)类与接口的关系

类与接口之间关系: 实现关系。

类与接口要注意的事项:
1. 非抽象类实现一个接口时,必须要把接口中所有方法全部实现。
2. 抽象类实现一个接口时,可以实现也可以不实现接口中的 方法。
3. 一个类可以实现多个接口 。

疑问: java为什么不支持多继承,而支持了多实现呢?

class A{            
    public void print(){
        System.out.println("AAAAAA");
    }
}

class B{

    public void print(){
        System.out.println("BBBBBB");
    }
}


class C extends A ,B{
            
}

public static void main(String[] args){
        new C().print();       //存在同名的方法
}                

 

(二)接口与接口的关系

接口与接口之间关系: 继承关系。

接口与接口之间要注意事项:一个接口是可以继承多个接口的。

 

 

三、多态

 

 

 

 

 

 

 

四、值交换

需求1:定义一个函数交换两个基本类型变量的值。

class Demo5 
{
    public static void main(String[] args) 
    {
        int a = 3;
        int b = 5; 
        changeValue(a,b);
        System.out.println("交换之后的值:a = "+a +" b="+b); // a=3 b=5
    }

    //需求1:定义一个函数交换两个基本类型变量的值。 
    public static void changeValue(int a , int b){
        int temp = a;
        a = b;
        b = temp;
        System.out.println("方法内部交换的值:a = "+a +" b="+b);
    }

}

 

 重点:

(1)形式参数是所属函数的局部变量;

(2)不同函数的局部变量之间没有关系,相互独立。

技术分享

 

 

需求2:定义一个函数交换数组中两个 元素的位置。

class Demo5 
{
    public static void main(String[] args) 
    {
        int[] arr = {23,10,9};
        changeArr(arr,1,2);
        System.out.println("数的元素:"+ Arrays.toString(arr));//23 9 10
    
    }
    
    //需求2: 定义一个函数交换数组中两个 元素的位置。
    public  static void changeArr(int[] arr , int index1,  int  index2){
        int temp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = temp;
    
    }

}

重点:

技术分享

需求3:

import java.util.*;
class Person{

    int x =10;
}


class Demo5 
{
    public static void main(String[] args) 
    {
        Person p = new Person();
        changeObj(p,20);
        System.out.println("x = "+ p.x);     //x=20
    }
    
    public static void changeObj(Person p ,int x){
        p.x = x;    
    }


}    

重点:

技术分享

 

 

 

 

 

 

 

 

 

以上是关于day11的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

19 01 11 javascript ?????????????????????(???????????????) ??????????????????????????????(代码片段

vscode代码片段建议bug

[code] PTA 胡凡算法笔记 DAY039