第二阶段(一) 抽象 接口 代码块 单例 多态 权限修饰符

本文介绍了Java编程中的抽象类,强调了抽象类的注意事项和在模板设计模式中的应用。同时,探讨了接口作为规范的角色,包括多实现和接口间的多继承。此外,还提到了Java1.8后的接口新特性以及代码块的作用,如静态代码块用于初始化静态资源,实例代码块在创建对象时执行。
摘要由CSDN通过智能技术生成

本周所学较多,java语法基本学习完毕,本次对这些内容进行总结

抽象

抽象类在第一阶段已经进行总结,本模块对其进行再深化

1、抽象类的使用注意事项

(1)抽象类的默认构造器一定是公有的,否则子类继承就不存在意义;

(2)抽象类中不一定包含抽象方法,有抽象方法的类一定是抽象类——就像顺口溜一样,子类继承抽象类,必定重写该类的抽象方法

2、抽象类实现模板设计模式

首先,针对设计模式,就是前人总结出的优雅规则化的一种编码方式,作为一个靠谱的程序员,我感觉是需要去理解和使用的;

模板设计模式:优化代码架构,提高代码复用性,最大程度减小代码的冗余,以部分实现,部分抽象的方式去进行处理和应用。

/** 1、当调用想要实现的具体放时,一般是通过该抽象类的抽象类子类去调用该方法,抽象类子类会对该抽象方法进行重写,即赋予想要添加的业务,或者添加自己想要的表达;
 *  —— 即抽象类中已经确定的由抽象的父类去进行,未确定的封装成抽象方法交给子类去进行具体的实现
 * 2、其中调用规则依旧遵守就近原则:当通过子类调用父类的方法时,子类中没有,直接调取的是父类的方法,当调取父类方法时,其中包含抽象方法,因为是子类发出的,因此就近选取子类的方法
 * —— 算是真正理解了一种设计模式
 * */

public class AbstractDemo_one {
    public static void main(String[] args) {
        Boy boy = new Boy();
        boy.life();

        Girl girl =  new Girl();
        girl.life();
    }
}


class Boy extends TemplateModel{

    @Override
    protected void think() {
        System.out.println("think girl");
    }
}

class Girl extends TemplateModel{

    @Override
    protected void think() {
        System.out.println("think play");
    }
}


abstract class TemplateModel{

    private final String eat = "eat food.";


    private final String sleep = "sleep in the bed.";


    public void life(){
        System.out.println(eat);
        System.out.println(sleep);
        think();
    }

    protected abstract void think();

}

接口

1、接口时一种骨架,是一种规范,接口的关键字是interface;jdk1.8及之前的版本中,接口中包含两个部分:常量和抽象方法

public interface InterfaceDemo_one {

    //可见 public,static,final都是默认的
    public static final String  str = "test";

    //public abstract是默认的
    public abstract void tsst();
}

2、接口的使用规则,这块可以去横向对比下

类与类之间是单继承

类与接口之间是多实现

接口与接口之间是多继承——接口是一种特殊类,特殊就特殊在多继承

public class InterfaceDemo_three {

    public static void main(String[] args) {
        X x = new X();
        x.likeGirl();
    }

}

/**
 * 一个类实现了已经多实现的那个接口,相当于调用了自身与整合的两个接口
 */
class X implements People{
    @Override
    public void think() {

    }

    @Override
    public void likeGirl() {

    }

    @Override
    public void play() {

    }
}


/**
 * 接口是多实现的
 */
interface People extends Boy, Girl {

    void think();

}


interface Boy {

    void likeGirl();

}

interface Girl {

    void play();
}

3、在jdk1.8之后,类中添加了实例方法,静态方法,私有方法时

代码块

类中包含了五大成分:成员变量,成员方法,代码块,构造器和内部类;本模块对代码块进行阐述,代码块分为两种,静态代码块和动态代码块;

1、静态代码块

(1)用法:static{}

(2)作用:去初始化加载静态资源,当调用时,静态资源已经加载完毕,一个字:优雅

public class StaticCodeDemo_one {

    public static List<String> cards = new ArrayList<>();

    static {
        System.out.println("加载静态模块");
        cards.add("111");
        cards.add("222");
    }

    public static void main(String[] args) {
        System.out.println("方法执行");
        System.out.println(cards);
    }


}

2、实例代码块

(1)用法:{}

(2)作用:创建类之中的代码模块,为每个实例对象加载资源——实例代码块是在构造器中使用的

public class SingleCodeDemo_two {

    public static void main(String[] args) {
        test t = new test();

    }
}

class test{

    {
        System.out.println("实例代码模块·");

    }

    public String test(){
        return null;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值