028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

二、final和static关键字,接口和抽象类-创新互联

fianl关键字的作用final修饰类、方法、变量的效果举例

变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的
final ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add("fdsfds");
//list 保存的是地址 所以添加数据没有问题 地址并没有改变
System.out.println(list);

//下面的代码会改变list的地址 所以不允许
list = new ArrayList();
list = null;
static静态的static修饰的特点体验练习
public class Student {
    String name;
    int age = 10;
    static String country = "中国";

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void eat() {
        System.out.println("吃肉夹馍");
    }
}

static关键字注意事项

代码
public class Student {
    String name;
    int age = 10;
    static String country = "中国";

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }


    public static void eat() {
        System.out.println("吃肉夹馍");
        //System.out.println(this.name);//静态方法里没有this
        //System.out.println(name);//静态方法里不能调用成员 变量
        System.out.println(country);
    }

    public void drink() {
        System.out.println("喝豆浆");
        System.out.println(this.name);//可以调用成员变量 
        System.out.println(country);//可以调用静态变量 
    }
}

子类可以继承父类中的静态成员

如何确定一个属性和方法是否要声明为static 属性:方法:接口接口语法接口语法练习代码代码
public interface Inter1 {
    //写一个抽象方法
    public abstract void eat()
}
public class Inter1Impl implements Inter1{
    @Override
    public void eat() {

    }
}
public class Demo01 {
    public static void main(String[] args) {
        //接口不能创建对象
        //Inter1 i1 = new Inter1();
        
        //用接口的实现类 创建对象
        Inter1Impl i1 = new Inter1Impl();
        i1.eat();
    }
}
接口的成员特点
public class Demo01 {
    public static void main(String[] args) {

        //用接口直接调用
        System.out.println(Inter1.age);
        //Inter1.age = 20; //不可以修改

    }
}

interface Inter1 {
    public static final int age = 10;
    double PI = 3.1415;//默认有public static final
}
接口的jdk8、9新增功能jdk8默认方法接口代码实现类代码测试代码
package com.heima.test4;

public interface Jumping {
    public abstract void jump();

    public default void drink() {
        System.out.println("喝水");
    }

    public default void eat() {
        System.out.println("吃点啥");
    }
}


class Cat implements Jumping {
    @Override
    public void jump() {
        System.out.println("猫跳了5米高");
    }

    @Override
    public void drink() {
        System.out.println("喝豆浆");
    }
}

class Dog implements Jumping {
    @Override
    public void jump() {
        System.out.println("狗跳了2米高");
    }

    @Override
    public void drink() {
        System.out.println("喝可乐");
    }
}


public class Demo02 {
    public static void main(String[] args) {
        new Cat().drink();
        new Dog().drink();
    }
}
一个类可以实现多个接口(多个接口逗号分开)

多个实现的接口中有相同的抽象方法,实现类只实现一次就可以了

多个实现的接口中有相同的默认方法,实现类 必须重写这个默认方法,否则报错

接口代码
public interface Inter1 {
    void eat();
    void jump();
    public default void play() {
        System.out.println("打王者");
    }
}

public interface Inter2 {

    void drink();

    void jump();

    public default void play() {
        System.out.println("去吃鸡");
    }
}
实现类(实现上面的两个接口)
class MyInterImpl implements Inter1, Inter2 {

    @Override
    public void eat() {
        System.out.println("chichichci");
    }

    @Override
    public void drink() {
        System.out.println("heheheheheh");
    }

    @Override
    public void jump() {
        System.out.println("跳 啊跳");
    }

    @Override
    public void play() {
        System.out.println("好好学习");
    }
}
测试
public class Demo02 {
    public static void main(String[] args) {
        MyInterImpl a = new MyInterImpl();
        a.drink();
        a.jump();
        a.play();
    }
}
jdk8静态方法接口代码
public interface Inter {
    //静态方法eat
}
测试代码
public class Demo02 {
    public static void main(String[] args) {
        Inter.eat();
        //A.eat(); 实现类无法调用
        //new A().eat();实现类的对象也不能 调用
    }
}

class A implements Inter {

}

interface Inter {
    //静态方法eat 默认是public的
    static void eat() {
        System.out.println("吃");
    }
}
实现类写同名方法的代码
public class Demo02 {
    public static void main(String[] args) {
        Inter.eat();
        A.eat();
    }
}

class A implements Inter {
    static void eat() {
        System.out.println("吃");
    }
}

interface Inter {
    //静态方法eat 默认是public的
    static void eat() {
        System.out.println("吃");
    }
}
jdk9私有方法
package com.heima.test6;


public class Demo01 {
    public static void main(String[] args) {
        MyInterImpl myInter = new MyInterImpl();
        myInter.play1();
        myInter.play2();
        myInter.play3();
    }
}

class MyInterImpl implements Inter1 {


}

interface Inter1 {
    private void playall() {
        System.out.println("打王者");
        System.out.println("吃鸡");
        System.out.println("打cf");
    }

    public default void play1() {
        playall();

        System.out.println("睡觉");
        System.out.println("出去浪");
    }

    public default void play2() {
        playall();

        System.out.println("出去浪");
        System.out.println("睡觉");
    }

    public default void play3() {
        playall();

        System.out.println("出去睡觉");
        System.out.println("回来浪");
    }

    //接口中定义的私有静态方法
    private static void check() {
        System.out.println("权限校验 ( 模拟 )");
    }

    public static void open() {
        check();
        System.out.println("open方法执行了");
    }

    public static void close() {
        check();
        System.out.println("close方法执行了");
    }
}
类和接口有同样的方法名接口代码
public interface Inter1 {
    public default void eat() {
        System.out.println("吃周黑鸭");
    }
}
类代码
class Fu {
    public void eat() {
        System.out.println("吃北京烤鸭");
    }
}
子类代码 继承了类Fu 同时也实现了接口Inter1
//子类 继承了Fu 同时实现了接口Inter1
//父类Fu和接口Inter1 有同样的方法eat,子类优先使用继承的父类的eat
class Zi extends Fu implements Inter1 {

}
测试
public class Test1 {
    public static void main(String[] args) {
        Zi z = new Zi();
        z.eat();//吃北京烤鸭
    }
}
接口和接口之间可以继承,并且可以多继承接口InterA代码和接口InterB代码
public interface InterA {
    public abstract void showA();

    public default void method(){
        System.out.println("InterA...method方法");
    }
}

public interface InterB {
    public abstract void showB();

    public default void method(){
        System.out.println("InterB...method方法");
    }
}
接口InterC代码
interface InterC extends InterA, InterB {

    @Override
    default void method() {
        System.out.println("interc...method");
    }
}
测试
public class TestInterface {
    public static void main(String[] args) {
        TestA a = new TestA();
        a.showA();
        a.showB();
        a.method();
    }
}

class TestA implements InterC {

    @Override
    public void showA() {
        System.out.println("showAshowAshowAshowA");
    }

    @Override
    public void showB() {
        System.out.println("showBshowBshowBshowBshowB");
    }
}
抽象类和接口区别
interface FLY{
    void fly();
}

interface Sport{
    void jump();
    void run();
}

abstract class airplane{
    String color;
    int length;
}
class Zhishengji extends airplane implements FLY{
    
}

abstract class bird{
    String color;
    String type;
    void eat();
}
class Zhuomnuniao extends bird implements FLY,Sport{
    
}
接口练习

超市管理系统”,设计三个类:收银员(Cashier)、销售员(Sales)、会计(Accountant)

Worker类代码

public abstract class Worker{
    public abstract void work();
}

Finance类代码 ˈfaɪnæns 财政 金融

public interface Finance{
    void count();
}

子类代码

class Sales extends Worker{
    public void work(){
        System.out.println("销售产品")
    }
}
class Cashier extends Worker implements Finance{
    @Override
    public void work(){
        System.out.println("收银")
    }
    @Override
    public void count(){
        System.out.println("统计今日金额")
    }
}
class Accountant extends Worker implements Finance{
    @Override
    public void work(){
        System.out.println("计算账单")
    }
    @Override
    public void count(){
        System.out.println("统计公司总金额")
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:二、final和static关键字,接口和抽象类-创新互联
URL地址:http://www.tsicrk.com/article/dsgogs.html

其他资讯

让你的专属顾问为你服务

2.4541s